2010-02-01 7 views
16

Tengo cambios en una rama que he fusionado en trunk en mi directorio de trabajo. La estadística Svn muestra la lista correcta de archivos modificados. Sin embargo, el resultado "svn stat" incluye un "+" en el historial programado para la confirmación en cada archivo agregado como nuevo en la rama.svn diff cuando los archivos están marcados con "historial programado con commit"

A + src \ Main \ Java \ com .... java

Cuando corro "svn diff", los archivos agregados que tienen el signo "+" no se incluye en la salida de parches .

Esto parece estar roto. Si un archivo está marcado como agregado, entonces su contenido completo debe estar en la salida de diff. Traté de pasar el --notice-ancestry. No hubo cambios en la salida de diff. Lo más cercano que puedo encontrar al mismo problema es these comments con respecto a los archivos copiados/movidos

¿Alguien sabe cómo obtener SVN incluye estos archivos en la salida diff?

Acabo de probar un programa de diferencias externas como lo sugiere esta respuesta questions, pero no funcionó para mí.

Respuesta

11

El carácter + en la salida de svn status indica que el archivo tiene "Historial programado con confirmación". Esto significa que el archivo no es realmente un archivo nuevo, sino un descendiente directo de algún otro archivo en el repositorio de Subversion.

Esto significa que debe no tener salida en svn diff, ya que el archivo no ha cambiado. Si tuviera que hacer algunas modificaciones locales al archivo, aparecerían en la salida de svn diff.

+1

Sospeché que el '+'. Sin embargo, ¿cómo puedo usar diff para crear un diff que incluya todos los cambios (como se ve desde el tronco) para enviar a los mantenedores de proyectos? –

+0

@James: puede ser difícil de hacer con el historial, ya que técnicamente una copia svn o un cambio de nombre * no se puede * representar en formato estándar de diferencias (y mantener el historial). Podrías eliminar el historial de ese archivo ('archivo cp file.bak; svn revertir archivo; archivo rm; archivo mv file.bak; svn agregar archivo') y luego tendrías el diff en' svn diff', pero no lo harías Guarde la historia, lo que sería muy malo. Es posible que deba incluir instrucciones para realizar la transformación de forma manual. – Avi

17

Cuando se lanza la versión 1.7, svn diff tendrá un interruptor --show-copies-as-adds para tal fin. Esa es una buena indicación de que las versiones hasta la 1.6 no tienen esa capacidad.

0

si "svn mv fileA fileB". habrá + signo cerca del archivo B. Creo que el signo + significa que el contenido real del archivo no se ha modificado, por lo que no aparece en svn diff. En este caso, es solo que el nombre del archivo ha cambiado.

Cuestiones relacionadas