2009-06-10 14 views
0

Sagen, ich habe 3 Dateien foo.txt, bar.txt und moo.txt alle Revision beim 1.SVN und Revisionsnummern

Say I foo.txt und bar.txt zehnmal begehen. Sie sind also bei Revision 1.10. Da es in SVN eine einzige Revision gibt, muss auch moo.txt nicht in Revision 1.10 sein. Wenn ich jetzt die Geschichte von moo.txt sehe, sehe ich dann die Geschichte der Commits von 1 bis 10?

Der Grund, warum ich diese Frage stelle, ist, dass ich meinem Freund erzählte, wie sucky CVS im Vergleich zu SVN ist. Er ist ein großer Fan von CVS. Also sagte er mir, da die CVS-Revisionsnummern dateispezifisch sind, ist es sehr einfach für ihn, eine einzelne Datei in einen Status zurückzuversetzen (da der Verlauf der einzelnen Datei nicht die Commits enthält, die an anderen Abschnitten des Projekts vorgenommen wurden). Da ich mein gesamtes Projekt immer auf eine vorherige Version (nicht einzelne Datei) aktualisiere, bin ich nie auf diese Situation gestoßen. Also, ich möchte wissen, wie das in SVN gehandhabt wird?

Antwort

2

Wenn Sie sich den Verlauf einer Datei ansehen, werden nur die Kommentare und Änderungen für die vorgenommenen Commits angezeigt, die diese Datei enthalten, aber die Revisionsnummern müssen nicht unbedingt fortlaufend sein.

Sie können jedoch eine einzelne Datei immer noch auf eine bestimmte Revisionsnummer zurücksetzen, ohne dass sich dies auf andere Dateien auswirkt.

z.

zwei Dateien:
foo.txt und bar.txt

1: checkin foo.txt
2: checkin foo.txt & bar.txt
3: checkin foo.txt
4: Einchecken bar.txt
5: Einchecken foo.txt
6: Check-In-Leiste.txt

Wenn man sich die Geschichte der Bar anschauen, werden Sie sehen:

6:
4:
2:

Und Sie würden noch in der Lage sein bar.txt zurück zur Überarbeitung zurückkehren 2 ohne Bewirken foo.txt

, wenn man sich die Geschichte von foo anschauen, werden Sie sehen:

5:
3:
2:
1:

Wenn man sich die Geschichte des ganzen Verzeichnis suchen, werden Sie alle Commits sehen.

Eine Repository-weite Versionsnummer bedeutet nur, dass Sie die Reihenfolge, in der die Dinge geändert wurden, anhand ihrer Revisionsnummern erkennen können. Es wirkt sich nicht auf die Anzeige von Historien oder das Zurücksetzen von Dateien aus.

0

Dies ist einfach genug zu testen. Wenn Sie den Verlauf für eine einzelne Datei anzeigen, enthält er nur Revisionen, in denen er eine Rolle gespielt hat. Wenn es nicht geändert wurde, würde dieser Protokolleintrag nicht angezeigt. Sie können bestimmte Revisionen für eine einzelne Datei oder eine Gruppe von Dateien problemlos wiederherstellen.

+0

Ich habe kein SVN mit mir zum Testen eingerichtet. Verwenden Sie CVS bei der Arbeit. Sonst hätte ich nicht gefragt. Danke. – Abhi

+0

Es ist unglaublich einfach, ein SVN Repo für Testzwecke einzurichten - einfach den Client installieren und einen "Import" durchführen –

+0

Cool. Werde es versuchen. – Abhi

0

SVN verwendet eine Repository-weite Revisionsnummer, die mit jedem Commit erhöht wird. Wenn Sie das Protokoll einer einzelnen Datei anzeigen, sehen Sie nur die Revision dieser Datei, aber es wird Lücken in der Versionsnummerierung geben.

0

Sie können daran denken, wie moo.txt tut Datei spezifische Revisionen haben, es ist nur sie haben Lücken, beispielsweise moo.txt Revisionen sind 1, 10, 11, 18, usw.

In Wirklichkeit ist dies ist nicht schwieriger zu handhaben als wenn es 1, 2, 3, 4, 5 wäre, hat aber den zusätzlichen Vorteil, etwas für das gesamte Repository zu bedeuten.

1

Der SVN-Verlauf kann pro Datei oder pro Verzeichnis angezeigt werden, sodass Sie den Verlauf aller Dateien sehen können, die mit dem von Ihnen gesuchten Filter übereinstimmen. Wenn Sie nur den Verlauf von moo.txt anzeigen, sehen Sie nur seine Änderungen (in Ihrem Beispiel wären es wahrscheinlich 3-12).

Auch erwähnenswert ist, dass SVN erlaubt atomic commits von mehr als einer Datei, so dass Sie möglicherweise foo.txt und moo.txt zusammen in einer einzigen Änderung bei Version 2 verpflichtet haben. In diesem Fall werden Sie auch Siehe dies in der Änderungshistorie von moo.txt.

Wirklich obwohl, ich denke, die richtige Antwort ist nur, um SVN zu installieren und es für sich selbst zu testen. Dann werden Sie viel besser verstehen, wie die Änderungshistorie funktioniert.