Wie kann ich ein Repository mit Python klonen und den Fortschritt des Klonvorgangs abrufen?

Lesezeit: 2 Minuten

Ich möchte in der Lage sein, ein großes Repository mit Python und einer Bibliothek zu klonen, aber vor allem möchte ich den Fortschritt des Klons sehen können, während er geschieht. Ich habe pygit2 und GitPython ausprobiert, aber sie scheinen ihren Fortschritt nicht zu zeigen. Gibt es eine andere Art und Weise?

  • Wie möchten Sie den Fortschritt anzeigen? In einer GUI oder auf stdout?

    – Robᵩ

    5. August 2016 um 3:42 Uhr

  • stackoverflow.com/questions/23155452/…

    – DavidN

    5. August 2016 um 3:53 Uhr

  • @Robᵩ, ich dachte nur so, wie der CLI-Git-Befehl Ihnen den Fortschritt anzeigt, z. B. Objekt 11/27 greifen …

    – Jonathan

    9. August 2016 um 7:19 Uhr

Benutzer-Avatar
Robᵩ

Sie können verwenden RemoteProgress aus GitPython. Hier ein grobes Beispiel:

import git

class Progress(git.remote.RemoteProgress):
    def update(self, op_code, cur_count, max_count=None, message=""):
        print 'update(%s, %s, %s, %s)'%(op_code, cur_count, max_count, message)

repo = git.Repo.clone_from(
    'https://github.com/gitpython-developers/GitPython',
    './git-python',
    progress=Progress())

Oder verwenden Sie diese update() Funktion für ein etwas verfeinertes Nachrichtenformat:

    def update(self, op_code, cur_count, max_count=None, message=""):
        print self._cur_line

Benutzer-Avatar
Bruce

Wenn Sie nur die Kloninformationen abrufen möchten, ist keine Installation erforderlich gitpythonkönnen Sie es direkt aus dem Standardfehlerstrom über die integrierte Funktion abrufen subprocess Modul.

import os
from subprocess import Popen, PIPE, STDOUT

os.chdir(r"C:\Users")  # The repo storage directory you want

url = "https://github.com/USER/REPO.git"  # Target clone repo address

proc = Popen(
    ["git", "clone", "--progress", url],
    stdout=PIPE, stderr=STDOUT, shell=True, text=True
)

for line in proc.stdout:
    if line:
        print(line.strip())  # Now you get all terminal clone output text

Sie können einige relative Informationen zum Klonbefehl sehen, nachdem Sie den Befehl ausgeführt haben git help clone.

--progress

Der Fortschrittsstatus wird standardmäßig im Standardfehlerstrom gemeldet, wenn er an ein Terminal angeschlossen ist, es sei denn --quiet angegeben. Dieses Flag erzwingt den Fortschrittsstatus, selbst wenn der Standardfehlerstrom nicht an ein Terminal geleitet wird.

1014530cookie-checkWie kann ich ein Repository mit Python klonen und den Fortschritt des Klonvorgangs abrufen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy