10 Stimmen

Subversion flippt bei mir aus!

Ich habe zwei Kopien einer Website, eine ist die Produktionskopie und die andere ist die Entwicklungskopie. Vor kurzem habe ich alles in der Produktionskopie in ein Subversion-Repository auf unserem Linux-Backup-Server übertragen. Ich habe ein Tag für die aktuelle Version erstellt und das war's.

Dann habe ich die Entwicklungskopie über die Produktionskopie kopiert (auf meinem lokalen Rechner, wo ich alles ausgecheckt habe). Es wurden nur 10-20 Dateien geändert, aber wenn ich mit Tortoise SVN eine Übergabe durchführe, sagt es, dass sich jede Datei geändert hat. Die erzeugte Diff-Datei zeigt, dass Subversion alles entfernt und durch die neue Version ersetzt hat (die exakt dieselbe ist).

Was ist hier los? Wie kann ich es reparieren?

Ein Beispiel diff:

Index: C:/Users/jhollon/Documents/Visual Studio 2008/Projects/saloon/trunk/components/index.html
===================================================================
--- C:/Users/jhollon/Documents/Visual Studio 2008/Projects/saloon/trunk/components/index.html   (revision 5)
+++ C:/Users/jhollon/Documents/Visual Studio 2008/Projects/saloon/trunk/components/index.html   (working copy)
@@ -1,4 +1,4 @@
-<html>
-<body bgcolor="#FFFFFF">
-</body>
+<html>
+<body bgcolor="#FFFFFF">
+</body>
 </html>
\ No newline at end of file

8voto

David M Punkte 4141

Es handelt sich wahrscheinlich um eine Fehlanpassung am Zeilenende. Eigenschaft einstellen svn:eol-style=native für alle Ihre Dateien.

http://svnbook.red-bean.com/en/1.5/svn.advanced.props.file-portability.html#svn.advanced.props.special.eol-style

Sie können Subversion veranlassen, diese Eigenschaft standardmäßig auf alle neuen Dateien zu setzen:

http://svnbook.red-bean.com/en/1.5/svn.advanced.props.html#svn.advanced.props.auto

Hier ist, was in meiner ~/.subversion/config steht:

enable-auto-props = yes

### Section for configuring automatic properties.
[auto-props]
### The format of the entries is:
###   file-name-pattern = propname[=value][;propname[=value]...]
### The file-name-pattern can contain wildcards (such as '*' and
### '?').  All entries which match will be applied to the file.
### Note that auto-props functionality must be enabled, which
### is typically done by setting the 'enable-auto-props' option.
*.c = svn:eol-style=native
*.cpp = svn:eol-style=native
*.h = svn:eol-style=native
# *.dsp = svn:eol-style=CRLF
# *.dsw = svn:eol-style=CRLF
*.sh = svn:eol-style=native;svn:executable=*
*.txt = svn:eol-style=native
*.png = svn:mime-type=image/png
*.jpg = svn:mime-type=image/jpeg
*.jpeg = svn:mime-type=image/jpeg
Makefile = svn:eol-style=native
*.tmpl = svn:eol-style=native
*.gif = svn:mime-type=image/gif
*.t = svn:eol-style=native;svn:executable=*
*.pm = svn:eol-style=native
*.pl = svn:eol-style=native;svn:executable=*
*.cgi = svn:eol-style=native;svn:executable=*
*.js = svn:eol-style=native;svn:mime-type=application/x-javascript
*.dtd = svn:eol-style=native;svn:mime-type=application/xml-dtd
*.txt = svn:eol-style=native;svn:mime-type=text/plain
*.html = svn:eol-style=native;svn:mime-type=text/html
*.yicf = svn:eol-style=native
*.xml = svn:eol-style=native;svn:mime-type=text/xml
*.sgml = svn:eol-style=native;svn:mime-type=text/sgml
*.xul = svn:mime-type=application/vnd.mozilla.xul+xml
*.tt = svn:eol-style=native

0voto

HiredMind Punkte 1746

Wie ich sehe, verwenden Sie Visual Studio, vielleicht hat es also mit der Dateikodierung zu tun? Ich hatte seltsame Probleme mit VS, das Quelldateien auf zwei verschiedenen Rechnern unterschiedlich kodiert, obwohl die Rechner die gleichen Sprach- und Kultureinstellungen haben. In VS sehen die Quellen genau gleich aus, aber SVN sieht die Rohdateien...

Öffnen Sie die beiden Revisionen in einem Editor, der sich nicht mit Unicode oder Kodierung auskennt (ich glaube, ich habe Notepad verwendet), und sehen Sie nach, ob sie sich unterscheiden. Die erste Zeile der Datei enthält einen Code, der angibt, welche Art der Kodierung verwendet wird. Ich habe keine Ahnung, wie dieser Code zu interpretieren ist, aber so können Sie zumindest feststellen, ob sie unterschiedlich sind.

Es gibt Optionen unter Extras -> Optionen -> Umgebung -> Dokumente, die die Kodierung steuern.

0voto

myron-semack Punkte 6056

Diese Frage scheint bereits gut beantwortet zu sein (im Stil von EOL). Ich wollte nur eine weitere Sache hinzufügen, die ein solches Problem auslösen kann: Tabulatoren vs. Leerzeichen. Wenn Ihr Texteditor oder Ihre IDE Leerzeichen für die Einrückung verwendet und jemand anderes in Ihrem Team Tabulatoren benutzt, wird SVN viele Datei-Änderungen sehen, aber Sie werden die Änderung nicht "sehen".

-1voto

Stéphane Punkte 6770

Kurzfristige Lösung (um den Unterschied zwischen den beiden Versionen zu prüfen): Legen Sie die beiden zu vergleichenden Versionen in zwei getrennten Verzeichnissen ab und vergleichen Sie die Verzeichnisse mit einem externen Vergleichstool (meld in Linux, winmerge in Windows). Diese Tools können so konfiguriert werden, dass sie Unterschiede am Zeilenende ignorieren.

Edit : für den Rest verwenden Sie die Lösung von David M (ich wusste nicht, dass SVN das kann...)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X