¿Cómo ver qué se actualizará desde el repositorio antes de emitir el comando "svn update"?

115

He realizado cambios en numerosos archivos en un repositorio SVN de Eclipse.

Luego voy al directorio del sitio web en el cuadro de Linux donde quiero actualizar estos cambios desde el repositorio al directorio allí.

Quiero decir "svn update project100" que actualizará los directorios en "project100" con todos mis archivos agregados y modificados, etc.

SIN EMBARGO, no quiero actualizar necesariamente los cambios que no hice. Así que pensé que podría decir "svn status project100" pero cuando hago esto obtengo una lista totalmente diferente de cambios que se realizarán, ninguno de los míos está en la lista, lo cual es extraño.

Por lo tanto, para estar seguro de que solo mis cambios se actualizan en el directorio web, me veo obligado a navegar a todos los directorios donde sé que hay un cambio que hice y actualizar explícitamente solo esos archivos, por ejemplo, "svn update newfile1.php", etc. lo cual es tedioso.

¿Alguien puede arrojar algo de luz sobre el procedimiento de trabajo estándar aquí, es decir, cómo obtengo una lista precisa de todos los cambios que están a punto de realizarse antes de ejecutar el comando "svn update"? Pensé que era el comando de "estado".

Edward Tanguay
fuente

Respuestas:

167

Tratar:

svn status --show-updates

o (el mismo pero más corto):

svn status -u
Dave Webb
fuente
9
o más corto: svn st -u
Kenyakorn Ketsombut
¿Qué significan las X en la salida?
IgorGanapolsky
1
Además, use: svn status -q -u... Solo muestra los cambios de actualización y los cambios locales que se relacionan con los archivos que pertenecen al repositorio. No obtiene signos de interrogación (?) De archivos que no son del repositorio.
será el
56

Dependiendo de lo que desee saber entre su copia de trabajo y el último repositorio del servidor svn, sin actualizar su copia de trabajo local, esto es lo que puede hacer:

si desea saber qué se ha cambiado en el repositorio del servidor svn, ejecute el comando:

$ svn st -u

si desea saber si el mismo archivo ha sido modificado tanto en su copia de trabajo local como en el repositorio del servidor svn, ejecute el comando:

$ svn st -u | grep -E '^M {7}\*'

si desea obtener la lista de archivos cambiados entre una revisión en particular y HEAD, ejecute el comando:

$ svn diff -r revisionNumber:HEAD --summarize

si desea obtener una lista de archivos cambiados entre revisiones específicas, ejecute el comando:

$ svn diff -r revisionNumber:anotherRevisionNumber --summarize

si desea ver qué se actualizará (sin actualizar realmente), ejecute el comando:

$ svn merge --dry-run -r BASE:HEAD .

si desea saber qué contenido de un archivo en particular se ha cambiado en el repositorio del servidor svn en comparación con su copia de trabajo, ejecute el comando:

$ svn diff -r BASE:HEAD ./pathToYour/file

si desea saber qué contenido de todos los archivos se han cambiado en el repositorio del servidor svn en comparación con su copia de trabajo, ejecute el comando:

$ svn diff -r BASE:HEAD .
TianCaiBenBen
fuente
43

Puede ver qué se actualizará (sin actualizar realmente) emitiendo:

svn merge --dry-run -r BASE:HEAD .

Más detalles aquí .

Ben Hoffstein
fuente
Lo anterior no funcionó para mí, tuve que corrersvn merge --dry-run --revision BASE:HEAD .
Znarkus
3
Obteniendo "svn: E195020: No se puede fusionar en una copia de trabajo de revisión mixta [16032: 16061]; intente actualizar primero"
Hubert Grzeskowiak
Gran respuesta - lástima que no funciona en copias de trabajo de revisión mixta .. Eso me aprenderá
Gerard ONeill
2
@HubertGrzeskowiak - Me encanta la ironía q: how do I ... without doing an update?a: first, do an update, then ...:) :) :)
Jesse Chisholm
17

Esto es lo que estaba buscando. Primero revisé Google, pero svn helpterminé viniendo por mí :)

svn diff -r BASE:HEAD .
Jeff
fuente
14

Lo mismo pero más corto :):

svn st -u
Kenzo
fuente
0

Puede usar 'svn diff' para ver la diferencia entre su copia de trabajo y el repositorio.

Andrés
fuente
9
Incorrecto. Esos solo enumerarían las diferencias entre usted y la última vez que sincronizó con el repositorio. Mientras tanto, no verá ninguna diferencia que otras personas hayan comprometido con el repositorio. El OP quiere saber cuáles son esos cambios, sin aplicarlos a travéssvn update
2010
@Andrew quiso sugerir que el OP ejecute 'svn diff -r HEAD URL' para ver la diferencia entre los archivos extraídos y lo que está registrado como HEAD o la versión superior en el repositorio.
Mac
0

En teoría, podría realizar todos los cambios en una rama que creó para su propio uso. Entonces estarías razonablemente seguro de que eres el único que se compromete a hacerlo.

En mi humilde opinión, el desarrollo de características debería hacerse así.

Entonces podría actualizar esta máquina de destino desde esta rama en lugar de desde el tronco.

Rory Becker
fuente