2013-07-20 9 views
9

Ist es möglich, einen Wort-für-Wort-Verlauf in der Versionskontrolle zu rekonstruieren? Idealerweise möchte ich Folgendes tun: 1) Ich gebe den Bereich der interessierenden Zeilen an, 2) lasse das Programm die entsprechenden Zeilennummern in früheren Versionen herausfinden, da der Code zwischen den Versionen häufig nach oben oder unten verschoben wird Versionsbereich, sagen wir seit Revision 19, oder seit einer Woche), 3) Ausdruck eines Wort-für-Wort-Verlaufs, entweder der Versionen, in denen zuletzt Wörtergruppen geändert wurden, oder der Autoren, nach denen Wortgruppen geändert wurden. So ist es wie svn blame oder git blame in einem Wort-für-Wort-Ebene.Word-by-Word Schuld/Annotate in Versionskontrolle?

Fehlt das, gibt es Tools, die oben # 1 und # 2 tun können? Das heißt, 1) Ich gebe den Bereich der Linien von Interesse an, 2) lasse das Programm die entsprechenden Zeilennummern in früheren Versionen herausfinden, 3) das Programm würde die Geschichte dieser Zeilen ausdrucken (wenn es Änderungen gab).

Entweder svn oder git wäre wirklich hilfreich für mich.

+1

Wort für Wort! Ich denke nicht, Git Tracks ändert sich Zeile für Zeile. Versuchen Sie Git für Autoren zu verwenden? für Programmierer denke ich nicht, dass diese Ebene der Schuld nicht erforderlich ist. –

+0

Ja, ich versuche das zumindest momentan mit einem LaTex-Dokument. Es muss nicht unbedingt etwas eingebaut sein, um es zu übertragen. Ich stelle mir ein Programm außerhalb von git vor, das git history lesen kann. –

+3

@JeslyVarghese: Git verfolgt den Snapshot nach Snapshot. Das zeilenbasierte Format wird on-the-fly berechnet, und es wäre auch möglich, ein wortbasiertes Format zu verwenden. – nosid

Antwort

1

Ich suchte nach so etwas und endete damit, meine eigene Lösung zu hacken. Sie können es hier finden:

https://github.com/d33tah/wordblame

Im Grunde ist es erstellt ein neues Repository-Verzeichnis, in dem alle Räume durch eine neue Zeile und eindeutige Zeichenfolge ersetzt werden signalisiert, dass es ein Raum war. Dann wird "git blame" ausgeführt und das Ergebnis wird neu interpretiert.