Subversion: Wie werden Unterschiede zwischen eingehenden Änderungen verglichen?

19

Ich möchte die Änderungen sehen, die meine Mitarbeiter vorgenommen haben, bevor ich die eingehenden Änderungen akzeptiere.

Also beginne ich damit, den Status zu bekommen

svn st -u

... was mir sagt, dass ich eine eingehende Änderung habe

    *     9803   incomingChanges.html
M         9803   localChanges.html
M   *     9803   localAndIncoming.html

Ich kann sehen, was ich geändert habe

svn diff localChanges.html

... aber wie kann ich unterscheiden, um anzuzeigen localAndIncoming.html, was geändert wurde und wie es sich von meiner Arbeitskopie unterscheidet?

Andrew
quelle
Keine Antwort auf Ihre Befehlszeilenfrage, aber: Wenn Sie am Ende wissen, was sich von Ihrer Arbeitskopie unterscheidet, möchten Sie wahrscheinlich die Repository-Änderungen mit Ihren eigenen Änderungen zusammenführen. Wenn Sie eine GUI verwenden, können Sie auch eine GUI verwenden, um den ersten Vergleich durchzuführen. Tools wie TortoiseSVN bieten solche Vergleiche. Außerdem können IDEs wie Eclipse das Überprüfen eingehender Änderungen (auch wenn nichts zusammengeführt werden muss - schön, wenn Sie eine Vorstellung davon haben, was Ihre Kollegen gemacht haben) ganz einfach machen und automatische Zusammenführungen vermeiden.
Arjan
1
Gibt es eine GUI-Methode, um eingehende Änderungen mithilfe von TortoiseSVN anzuzeigen?
Christian
Sie möchten auch incomingChanges.html unterscheiden, nein?
Raffi Khatchadourian

Antworten:

21

Ich glaube, was Sie brauchen, ist:

svn diff -rBASE:HEAD
joelittlejohn
quelle
2

Zu Ihrer Information svn diffgibt es einen Unterschied basierend auf der unveränderten Datei, die im .svnVerzeichnis gespeichert ist , und nicht basierend auf der Live-Repo-Version.

Du kannst rennen svn update Subversion , um zu versuchen, ein Update durchzuführen (und möglicherweise zusammenzuführen), und dann einesvn diff , aber das ist nicht so sauber, wie Sie es sich wünschen.

Endlich svn diff gibt es Support-Unterschiede nur für das Repo. Beispiel:

svn diff svn://svnserver/repo/localChanges.html -r REV_NO

Standardmäßig wird HEAD mit der übergebenen Revision verglichen.

Andy
quelle
2

Mit tortoisesvn (wenn Sie Windows verwenden)

  • Rufen Sie den Protokollbildschirm auf

  • Kopfversion auswählen

  • Klicken Sie mit der rechten Maustaste auf localAndIncoming.html

  • Wählen Sie Mit Arbeitskopie vergleichen

Ghislain Hivon
quelle
0

Sie können wirklich nicht, bis Sie tatsächlich die neue Version herunterladen. Einschränkungen wie diese waren einer der Hauptgründe, warum eine neue Art der Quellcodeverwaltung in letzter Zeit populär geworden ist. Es heißt dezentrale Quellcodeverwaltung.
Mit diesem neuen Formular verfügen Sie über ein eigenes lokales Repository. Anschließend können Sie Änderungen aus dem Haupt-Repository übernehmen und ein Diff ausführen. Wenn Sie die vorgenommenen Änderungen nicht mögen, können Sie Ihr eigenes Repository zurücksetzen und von dort aus fortfahren.

http://mercurial.selenic.com/

Und ja, ich weiß, dass es keine optimale Lösung ist, Produkte zu wechseln, aber es ist trotzdem eine Lösung.

Daisetsu
quelle
0

Machen Sie eine weitere Prüfung in einem neuen Ordner.

cd ..
svn checkout  /path/to/repo clean_working_copy

Wenn Sie clean_working_copy wiederverwenden, vergessen Sie nicht, vorher zu aktualisieren

svn update clean_working_copy

Vergleichen Sie dann Ihre Datei mit der von clean_working_copy

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

Oder mit deinem bevorzugten 3-Wege-Diff (meins ist kdiff3)

kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html
Ghislain Hivon
quelle
Diese Arbeit, aber ein scm sollte einen integrierteren Weg bieten.
21.
0

Ich glaube

svn diff -r HEAD

fast gibt was du willst. Das einzige, was ist, dass die + und - relativ zu dem, was Sie erwarten, umgekehrt sind.

Verwechslung
quelle