Ich zähle bereitgestellte Dateien in Git mit GitPython.
Für geänderte Dateien kann ich verwenden
repo = git.Repo()
modified_files = len(repo.index.diff(None))
Aber für bereitgestellte Dateien kann ich keine Lösung finden.
Ich weiss git status --porcelain
aber ich suche nach einer anderen Lösung, die besser ist. (Ich hoffe mit gitpython
nicht Git-Befehl, das Skript wird schneller sein)
Du bist in der Nähe, benutze repo.index.diff("HEAD")
um Dateien im Staging-Bereich abzurufen.
Vollständige Demo:
Erstellen Sie zunächst ein Test-Repo:
$ cd test
$ mkdir repo && cd repo && touch a b c && git init && git add . && git commit -m "init"
$ echo "a" > a && echo "b" > b && echo "c" > c && git add a b
$ git status
On branch master
Changes to be committed:
modified: a
modified: b
Changes not staged for commit:
modified: c
Checken Sie nun ipython ein:
$ ipython
In [1]: import git
In [2]: repo = git.Repo()
In [3]: count_modified_files = len(repo.index.diff(None))
In [4]: count_staged_files = len(repo.index.diff("HEAD"))
In [5]: print count_modified_files, count_staged_files
1 2