Ich möchte einige Metriken zu den Dateien in meinem Repository sind die zuletzt aktiv, mit einer Messung, die keine Berechnung nach dem Speicher benötigt. Also Anzahl der Commits vor der letzten Änderung.Holen Sie sich das Alter einer Datei in Bezug auf die Commits in git
So ist die Idee, die ich habe, ist also:
file_list = subprocess.Popen(['git', 'ls-files'])
(files, _) = proc.communicate()
missing_ages = files
ages = {f: -1 for f in old_ages}
commits_proc = subprocess.Popen(['git', 'ref-list', '--all', '--pretty=format:""'])
(commits, _) = commits_proc.communicate()
age = 0
for commit_sha in [s.split(' ')[1] for s in commits]
commit_list = subprocess.Popen('some', 'git', 'command')
commit_files = commit_list.communicate()
for file in commit_files
if file in missing_ages
ages[file] = age
missing_ages.remove(file)
age += 1
Was ich brauche, ein nicht-Porzellan git Befehl ist die Liste der Dateien in einer begehen aufgrund seiner sha zu bekommen.
Wird nicht die gesamte Dateistruktur von jedem Git-Commit referenziert? Sie müssen benachbarte Commits unterscheiden, um festzustellen, ob eine Datei geändert wurde, –
Das ist richtig, jedoch gibt es zum Beispiel 'git show --stat', das in der Lage ist, die Dateiänderungen in einem Commit aufzulisten, aber es ist nicht stabil, und enthält auch zusätzliche Informationen, die ich lieber nicht aussortieren würde –
EdJoJob
'git show' macht einfach ein diff des Commits gegen seine Eltern (kombiniertes diff, wenn es mit mehreren Eltern zusammengeführt wird). Sie müssen dasselbe tun (vielleicht haben Sie es für Sie getan, z. B. 'git diff-tree --name-status'), um Änderungen zu erkennen. – torek