2010-05-14 14 views
10

Tengo dos copias de un sitio, una es la copia de producción y la otra es la copia de desarrollo. Recientemente agregué todo en la producción a un repositorio de subversión alojado en nuestro servidor de respaldo de Linux. Creé una etiqueta de la versión actual y terminé.Subversion volviendo loco conmigo!

Luego copié el sobre copia de desarrollo de la copia de producción (en mi máquina local donde tengo todo desprotegido). Solo se cambian 10-20 archivos, sin embargo, cuando uso el SVN tortuga para hacer una confirmación, dice que cada archivo ha cambiado. El archivo diff generado muestra la subversión eliminando todo y reemplazándolo con la nueva versión (que es exactamente la misma).

¿Qué está pasando? ¿Cómo lo arreglo?

Un ejemplo 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 
+2

Esto suena como un problema con [newlines] (http://en.wikipedia.org/wiki/Newline): ¿quizás se convirtieron a CRLF de alguna manera? – Veeti

+0

Supongo que es un problema de fin de línea. Vea la diferencia con una herramienta que muestra las marcas de fin de línea y verá que son diferentes.:) – mihi

+0

La forma más rápida de determinar la existencia de un problema de final de línea es canalizar la salida a través de 'od -c' y luego buscar el indicador' \ r' –

Respuesta

8

Es probablemente una falta de coincidencia de final de línea. Establezca la propiedad svn:eol-style=native en todos sus archivos.

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

Usted puede tener Subversion establece esta propiedad en todos los archivos nuevos de forma predeterminada:

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

Esto es lo que está en mi ~/.subversion/config:

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 
+0

Eso es todo, la nueva versión tenía/ny el viejo tenía/r/n – Malfist

-1

solución a corto plazo (para verificar la diferencia entre las dos versiones): echa un vistazo a las dos versiones para comparar en dos directores separados es, y comparar los directorios con una herramienta externa diff (meld in linux, winmerge en windows). Esas herramientas se pueden configurar para ignorar las diferencias de fin de línea.

Editar: para el resto, utilizar la solución de David M (no sé de SVN podría manejar eso ...)

+0

¡Ay! No cree ganchos de Subversion para diddle con caracteres EOL. Puedes explícitamente lo que quieras. 'svn: eol-style = native' es la elección correcta a menos que tenga una buena razón para hacer otra cosa. –

0

Veo que estás utilizando Visual Studio, así que tal vez tiene que ver con la codificación del archivo ? He tenido problemas extraños con los archivos fuente de codificación VS de forma diferente en dos máquinas diferentes, a pesar de que las máquinas tienen el mismo idioma y configuraciones de cultura. En VS, las fuentes se ven exactamente iguales, pero SVN ve los archivos sin formato ...

Abra las dos revisiones en un editor que no sabe nada sobre Unicode o codificación (¿creo que utilicé el Bloc de notas?), Y vea si son diferentes. La primera línea del archivo contiene un código que indica qué tipo de codificación se está utilizando. No tengo idea de cómo interpretar ese código, pero al menos podrás saber si son diferentes.

Hay opciones en Herramientas -> Opciones -> Entorno -> Documentos que controlan la codificación.

+0

En realidad, no estoy usando Visual Studio, simplemente lo puse en ese directorio porque ahí es donde guardo todos mis proyectos. En realidad está siendo utilizado con Dreamweaver – Malfist

0

Parece que esta pregunta ya está bien respondida (estilo EOL). Solo quería agregar otra cosa que pueda desencadenar un problema como este: Tablas vs Espacios. Si su editor de texto o IDE usa espacios para sangrar, y alguien más en su equipo usa Tabulaciones, SVN verá muchos cambios de archivos, pero no "verá" el cambio.

Cuestiones relacionadas