2011-02-07 7 views
25

Quiero ver solo la lista de archivos que se han modificado, agregado, etc., no el contenido (svn diff salidas que), solo la lista de archivos como svn status.SVN: cómo comparar la copia de trabajo con la revisión del repositorio?

svn diff -r HEAD me descarga toneladas de información, que es difícil de entender rápidamente.

svn status muestra solo los cambios que comparan la copia de trabajo con su versión original local (no con la revisión del repositorio).

svn update no admite --dry-run

En pocas palabras, necesito algo así como svn status, pero lo compara la copia de trabajo actual con la revisión del repositorio (voy a comparar con una revisión HEAD).

Miré a través del manual de SVN, pero nada ayudó a mí, por desgracia: -/

Respuesta

40

Trate

svn status --show-updates 

Los -u (o --show-updates) opción a svn status causas SVN para ponerse en contacto con el repositorio y espectáculo cosas que han cambiado en el repositorio - ¿eso es suficiente para ti? Dependiendo de lo que necesita, es posible que desee el -q o --verbose bandera demasiado

+0

¡Estupendo! Pero marca todos los archivos como '*' solamente. – Azat

+0

¿Puedo comparar, por ejemplo, dos revisiones? 'svn status -r4: 5' no es compatible. – Azat

+0

¿O es una pregunta para otro tema? – Azat

22
svn diff -r head 

Esto producirá una lista diff para todos los archivos que se diferencian entre la copia de trabajo y el repositorio, dando una lista de archivos y los cambios reales . Lo cual, como dices, puede ser difícil de entender.

Así que trate esto:

svn diff -r head --diff-cmd meld 

Esta DOS lo mismo, pero muestra los cambios en el uso de meld (se puede proporcionar cualquier otra herramienta visual de diferencias en su arsenal), lo cual es mucho más manejable.

Pero en serio, acostúmbrese a leer esas salidas de diff, ya que forman la base para muchas otras cosas (por ejemplo, parches) y son bastante difíciles de evitar en el mundo de Linux. Para reducir la salida:

svn status -u 

le dará una lista de archivos modificados, entonces:.

svn diff <file> -r head --diff-cmd <tool> 

le dará una diferencia visual de únicamente el archivo en particular que usted está interesado en

+1

Dulce, gracias. Esta es exactamente la respuesta que estaba buscando. Meld tiene una buena capacidad para comparar directorios enteros, ¿conoces la manera de enviar copias de trabajo SVN a este programa de esa manera? Para que podamos obtener una vista previa de toda la estructura. – Line

+0

@kdopen, se disculpa por los votos a favor. A pesar de estar molesto por la eliminación de una de mis respuestas, no perdonó personalmente. Tengo un amigo muy inventivo que me visitó y (sabiendo que estaba enojado) usó esta situación y mi computadora desatendida y mi cuenta para hacerme una broma y downvoted muchas respuestas. De infantil, debo decir, pero una broma realmente inteligente que obviamente cumplió su propósito de envolvérselo en la comunidad de StackOverflow. : D Al menos espero que alguien haya tenido una buena risa en mi cuenta. : D – AlexRebula

+0

Bueno, parece que el sistema lo corrigió. Trate de no dejar que el sistema de revisión lo atrape. Cuando alcances 500 puntos de reputación (alrededor de 3 votaciones ascendentes a partir de ahora), también comenzarás a trabajar en las colas; entonces te darás cuenta de que solo debes enfocarte en las reglas y no preocuparte por cómo se sentirán las personas con respecto a tu revisión. Recibo muchos comentarios cada día de personas que han recibido una opinión negativa, y he tenido mis propios asuntos revisados ​​y eliminados con el tiempo. Esto es lo que nos diferencia del desorden de sitios como Quora – kdopen

2

La forma en que redactó la pregunta original, la respuesta correcta es svn status -u como ya se indicó. En base a los comentarios de seguimiento, también debe conocer svn diff --summarize ya que esto podría ser lo que está buscando. Esto es lo que usaría para comparar dos revisiones de repositorio o dos etiquetas u otra cosa en el repositorio. No puede usar esta opción para comparar su copia de trabajo con el repositorio (el estado lo hace).

Ver: http://blogs.collab.net/subversion/2007/03/computing_the_d/

1

Aquí es lo que hice, y se resolvió mi problema: Quiero ver lo que es diferente entre mi copia de trabajo y la copia del repositorio.

svn diff > ~/svndiff.txt 

Y luego me sacó el archivo de texto plano en Sublime Text 2 para que pudiera leerlo más fácil. Adivino que esto es bastante básico, pero pensé que lo publicaría ya que me ayudó con un problema similar.

-1

Esto puede ser lo que buscas:

svn diff -r CABEZA --summarize

1

op:

Quiero ver sólo la lista de archivos que han sido modificados, agregados, etc., no el contenido (svn diff), solo la lista de archivos como svn status.

Al igual que el OP, quiero ver un "svn status" informe de estilo de la copia de trabajo actual de las ramas de los proyectos que están anidadas por debajo de un repositorio SVN mayor contra su último tronco y quiero usar el mismo camino y argumentos de revisión que utiliza svn diff.

La siguiente hace eso:

svn diff --old . --new ^/pathToProject/trunk --summarize 

Por supuesto, cambia "pathToTrunk" a la trayectoria real utiliza su repositorio.

Cuestiones relacionadas