2017-01-21 1 views
1

Die git-scm können Sie bestimmen, umbenennen im Fluge der Dateien im gleichen Repository (z. B. git diff --find-renames). Wie wäre es, wenn ich ungefähr ein Dutzend Sätze von Dateien hätte (z. B. ungefähr 10 Sätze insgesamt (die unabhängige Zweige einiger etwas verwandter Software sein können, z. B. * BSDs)), mit ungefähr 25.000 Dateien in jedem Satz. (Jeder Satz kann täglich aktualisiert werden, und stellt eine Kasse ohne Geschichte.)bestimmen Datei Ähnlichkeit zwischen ein paar Sätze von 25k Dateien jeweils

eine Datei aus einen Satz Gegeben, ich möchte wissen, was die Wahrscheinlichkeit Vorfahr oder Nachkomme Datei (oder Dateien) in ein anderer Satz. (Beachten Sie, dass git selbst überhaupt nicht beteiligt ist, außer um das Konzept zu illustrieren.)

Antwort

1

Die Verwendung von git könnte hier tatsächlich sinnvoll sein. Vergeben Sie beispielsweise jede Dateigruppe als separaten Zweig eines Repositorys. Dann können Sie wie etwas tun:

R075  file2  file1 

Wenn file2 in proj2 75% ähnlich ist file1 in proj1:

git diff -C --diff-filter=RC --name-status proj2..proj1 

Welche Ausgabe wie produzieren wird.

+0

Weißt du, ob es tatsächlich funktioniert, wenn es eigentlich keinen gemeinsamen Vorfahren für jeden Zweig gibt außer leerem Raum? (Zum Beispiel basiert FreeBSD nicht auf OpenBSD und OpenBSD basiert nicht auf FreeBSD.) – cnst

+0

hast du noch weitere Vorschläge? Ich bekomme viele falsch positive Berichte; Ich möchte sicherstellen, dass es absolut keine falsch-positiven Ergebnisse gibt, z. B. müssen die Dateinamen zwischen den beiden Projekten eindeutig genug sein und einander entsprechen, oder es muss eine große Ähnlichkeit bestehen. – cnst

+0

Ich denke, ich könnte genauso gut nur auf Dateinamen basieren; aber danke für die git suggestion! BTW, ich musste auch 'git config --local diff.renamelimit 99999' damit es funktioniert. – cnst

Verwandte Themen