2008-12-28 3 views
8

Ich benutze ein externes Diff-Tool mit Subversion (Beyond Compare rules!), Und eines der großartigen Features ist, dass ich mit dem diff-Programm kleinere Änderungen an der Datei vornehmen kann, während ich die Änderungen überprüfe .Warum kopiert svn diff manchmal Arbeitsdateien in eine temporäre Datei?

Aber svn diff funktioniert anders bei verschiedenen Projekten von mir. Alles in allem ist die linke Datei eine temporäre Datei, die die letzte in Subversion gespeicherte Version (den Kopf) enthält. In einigen Fällen ist die rechte Datei die eigentliche Arbeitsdatei, in anderen ist es eine temporäre Dateikopie der Arbeitsdatei. Im ersten Fall kann ich Änderungen im diff-Programm vornehmen und sie beeinflussen die Arbeitskopie. Im zweiten Fall bearbeite ich eine temporäre Datei, sodass Änderungen verloren gehen.

Warum unterscheidet sich Subversion manchmal von der Arbeitsdatei, aber manchmal von einer temporären Kopie der Arbeitsdatei? Wie kann ich die Arbeitsdatei immer verwenden?

Antwort

11

Haben Sie irgendwelche SVN: Schlüsselwörter für diese Dateien? Wenn ja, wird Subversion zuerst eine temporäre Datei erstellen, in der alle erweiterten Schlüsselwörter "nicht expandiert" sind. Dadurch vermeiden Sie, dass alle Keyword-Zeilen als unterschiedlich angezeigt werden, auch wenn sie nicht geändert wurden. Wenn Sie zum Beispiel eine Datei in Ihrer Arbeitskopie gegen BASE einteilen, hat die BASE-Datei keine Schlüsselwörter erweitert (und wird auch mit LF-Zeilenenden gespeichert), während die Datei in Ihrer Arbeitskopie alle Schlüsselwörter erweitert hat (und möglicherweise auch.) mit CRLF-Zeilenenden gespeichert werden). Wenn Sie diese Datei nicht lokal geändert haben, würde 'svn diff' alle Zeilen als unterschiedlich anzeigen (wenn die Zeilenenden nicht übereinstimmen) oder zumindest alle Zeilen mit den Schlüsselwörtern würden anders angezeigt - was Sie nicht tun würde erwarten.

+0

Es war die svn: keywords Eigenschaft! Vielen Dank. –

+0

Endlich herausgefunden! Hatte das selbe Problem mit svn: eol-style property. – ocarlsen

0

Vielleicht gibt es einige Zugriffsprobleme. Versuchen Sie, eine Datei schreibgeschützt zu setzen. Wenn svn jetzt eine temporäre Datei öffnet, ist dies eine mögliche Antwort auf Ihre Frage. In diesem Fall schützt vielleicht ein Editor/IDE, den Sie verwenden, die Datei schreibgeschützt.

+0

Gut gedacht, aber es scheint nicht mit Schreibberechtigungen oder Editoren zu tun zu haben, die die Datei offen halten. –

Verwandte Themen