2009-10-29 9 views

Antwort

9

Was Sie tun möchten, ist eine Blame für diese Quelldatei zu tun und es zeigt Ihnen die Revisionen, die jede der Codezeilen geändert.

Ich kenne keinen Befehl, der in der Lage wäre, Ihnen alle Überarbeitungen für eine bestimmte Codezeile zu geben ... was Sie tun können, ist ein Show-Log in einer einzelnen Datei zu machen und dann jeden einzelnen anzusehen Revisionen, die im Laufe der Zeit stattfanden.

+0

Gibt es auch eine Möglichkeit, * alle * Revisionen zu finden, in denen eine bestimmte Zeile geändert wurde? Schuld wird mir nur die letzte Überarbeitung geben. –

+0

Nein, es wird nur angezeigt, wer die Zeile zuletzt geändert hat. Er wollte etwas, das er auf eine Linie zeigen und zeigen kann, in welchen Revisionen diese Linie geändert wurde (meine Verstetigung der Frage). –

+0

Ich kenne keinen solchen Befehl, der Ihnen alle Überarbeitungen für eine bestimmte Codezeile geben könnte ... Sie können ein Show-Protokoll für eine einzelne Datei erstellen und dann die einzelnen Revisionen ansehen fand im Laufe der Zeit statt. – mezoid

1

Sie können mit der rechten Maustaste auf eine Datei in Ihrem Repo klicken und TortoiseSVN-> Show Log auswählen, um die Revisionen zu erhalten, von denen diese Datei betroffen war. Auf einer Linie für Linie gibt es keine Weise, von der ich weiß.

2

Mezoids Schuld klingt korrekt. Nebenbei möchte ich eine Technik teilen, die die Benutzer von svn möglicherweise nützlich finden. (Es ist Svn Schuld, aber ich benutze die "Annotate" Synonym oder "Svn ann", weil "Schuld" ein bisschen hart klingt!)

OK, so haben Sie eine Linie, die Sie interessiert sind, und es hat eine unverwechselbare Saite drauf "distinctString". Sie möchten die Commit-Nachricht lesen, als die Zeile zuerst eingeführt wurde, aber sie wurde möglicherweise einige Male bearbeitet. Also, Sie voran gehen und dies tun:

# svn ann that.file | grep distinctiveString 
2345  yada yada distinctiveString blah blah 

Ein Blick auf Ihrem TRAC Web-Interface für svn zeigt, dass r2345 einfach die Vertiefung der Linie geändert, war es nicht die Revision, bei der die Leitung eingeführt wurde. Also das nächste verwenden Sie die R-Flag (oder -r, tun svn help ann sicher zu machen) die Revision eine weniger als die Revision festlegen, die Sie im vorherigen Schritt gefunden:

# svn ann -R 2344 that.file|grep distinctiveString 
2211 yada yada distinctiveString blah blah 

spülen und wiederholen, bis Sie finden das Original.

Sie können die TRAC-Suche bei jedem Schritt weglassen, indem Sie einfach wiederholen, bis Sie die Zeile nicht mehr sehen, und das Ergebnis der vorletzten Iteration nehmen.

OK, es ist ein bisschen mühsam, aber wenn Sie wirklich wollen wissen, wer diese Linie eingeführt hat, wird es den Job machen. Es kann Ihnen Zeit sparen, wenn die ursprüngliche Commit-Nachricht die Absicht eines obskuren Codeabschnitts erläutert, der ansonsten so aussehen könnte, als ob er entfernt werden könnte.

+0

Ich mag es. Ich werde das irgendwann versuchen müssen. – mezoid