2010-02-01 6 views
16

Ich habe Änderungen an einem Zweig, den ich in meinem Arbeitsverzeichnis zu Stamm zusammengefasst habe. Svn stat zeigt die korrekte Liste der geänderten Dateien an. Die "svn stat" -Ausgabe enthält jedoch ein "+" in dem Verlauf, der für das Festschreiben für jede Datei geplant ist, die der Verzweigung neu hinzugefügt wurde.svn diff, wenn Dateien mit "Verlauf geplant mit Festschreiben" markiert sind

A + src \ main \ java \ com .... java

Als ich "svn diff", die hinzugefügten Dateien ausführen, die die "+" sind nicht enthalten in der Patch-Ausgang haben .

Dies scheint gebrochen. Wenn eine Datei als hinzugefügt markiert ist, sollte der gesamte Inhalt in der diff-Ausgabe enthalten sein. Ich habe versucht, die --notice-Abstammung zu übergeben. Es gab keine Änderung am diff-Ausgang. Der nächstgelegene ich für das gleiche Problem finden kann, wird these comments IN BEZUG AUF kopiert/verschoben Dateien

Kennt jemand wie SVN bekommen diese Dateien im diff Ausgabe enthält?

Ich habe gerade ein externes diff-Programm versucht, wie von dieser questions Antwort vorgeschlagen, aber es hat nicht für mich funktioniert.

Antwort

11

Das + Zeichen in der Ausgabe von svn status zeigt an, dass die Datei "Verlauf mit Commit geplant" hat. Dies bedeutet, dass es sich bei der Datei nicht um eine neue Datei handelt, sondern um einen direkten Nachfolger einer anderen Datei im Subversion-Repository.

Das bedeutet, dass sollte keine Ausgabe in SVN diff sein, da die Datei nicht tatsächlich geändert hat. Wenn Sie lokale Änderungen an der Datei vornehmen würden, würden sie in der Ausgabe von svn diff erscheinen.

+1

Ich vermutete das '+'. Wie kann ich jedoch Diff verwenden, um ein Diff zu erstellen, das alle Änderungen (wie vom Stamm aus gesehen) für die Übergabe an einen Projektbetreuer enthält? –

+0

@James: Es könnte schwierig sein, mit der Geschichte zu tun, da technisch eine Svn-Kopie oder Umbenennung * nicht im Standard-Diff-Format dargestellt werden kann (und den Verlauf behalten). Sie könnten den Verlauf dieser Datei entfernen ('cp file.bak; svn revert datei; rm datei; mv datei.bak datei; svn datei hinzufügen') und dann hätten Sie das diff in' svn diff', aber Sie würden nicht Behalte die Geschichte nicht, was zu schade wäre. Möglicherweise müssen Sie Anweisungen für die manuelle Durchführung der Umwandlung hinzufügen. – Avi

17

Wenn Version 1.7 freigegeben wird, wird svn diff einen --show-copies-as-adds Schalter für diesen Zweck haben. Das ist ein guter Hinweis darauf, dass Versionen bis 1.6 diese Fähigkeit nicht haben.

0

wenn Sie "svn mv fileA fileB". Es wird + Zeichen in der Nähe von Datei B sein. Ich denke, das + Zeichen bedeutet, dass der tatsächliche Dateiinhalt nicht geändert wurde, so dass es nicht in svn diff angezeigt wird. In diesem Fall wurde nur der Dateiname geändert.