Subversion: ¿Cómo comparar las diferencias entre los cambios entrantes?

19

Me gustaría ver los cambios que han realizado mis compañeros de trabajo antes de aceptar los cambios entrantes.

Así que empiezo obteniendo el estado

svn st -u

... que me dice que tengo un cambio entrante

    *     9803   incomingChanges.html
M         9803   localChanges.html
M   *     9803   localAndIncoming.html

Puedo ver lo que he cambiado

svn diff localChanges.html

... pero, ¿cómo puedo localAndIncoming.htmlmostrar lo que ha cambiado y cómo es diferente de mi copia de trabajo?

Andrés
fuente
No es una respuesta a su pregunta de línea de comando, pero: al final, una vez que sepa qué es diferente de su copia de trabajo, probablemente querrá fusionar los cambios del repositorio con sus propios cambios. Cuando use alguna GUI para hacerlo, ¿por qué no usar una GUI para ayudarlo a hacer la diferencia inicial también? Herramientas como TortoiseSVN ofrecen tal comparación. Además, los IDE como Eclipse pueden hacer que la revisión de los cambios entrantes (incluso cuando no haya nada que fusionar, sea agradable tener una idea de lo que han estado haciendo sus compañeros de trabajo) muy fácil , evitando las fusiones automáticas.
Arjan
1
¿Hay una forma GUI de ver los cambios entrantes usando TortoiseSVN?
Christian
También te gustaría diferir entranteChanges.html también, ¿no?
Raffi Khatchadourian

Respuestas:

21

Creo que lo que necesitas es:

svn diff -rBASE:HEAD
joelittlejohn
fuente
2

FYI svn diffda una diferencia basada en el archivo no modificado almacenado en el .svndirectorio, no basado en la versión de repositorio en vivo.

Puede ejecutar svn updatepara obtener subversion para intentar una actualización (y posiblemente combinar) y luego hacer una svn diff, pero eso no es tan limpio como supongo que desea.

Finalmente svn diffadmite diferir solo en el repositorio. Ejemplo:

svn diff svn://svnserver/repo/localChanges.html -r REV_NO

Lo que por defecto es comparar HEAD con la revisión aprobada.

Andy
fuente
2

Con tortoisesvn (si usa Windows)

  • Invocar la pantalla de registro

  • Seleccionar revisión de cabeza

  • Haga clic derecho en localAndIncoming.html

  • Elija Comparar con copia de trabajo

Ghislain Hivon
fuente
0

Realmente no puede hasta que realmente descargue la nueva versión. Limitaciones como esta fueron una de las principales razones por las que un nuevo tipo de control de fuente se ha vuelto popular últimamente. Se llama control de fuente descentralizado.
Con este nuevo formulario, usted tiene su propio repositorio local, y luego puede tomar los cambios del repositorio principal y ejecutar un diff en él, si no le gustan los cambios realizados, puede revertir su propio repositorio e ir desde allí.

http://mercurial.selenic.com/

Y sí, sé que sugerir que cambies de producto no es una solución óptima, pero no obstante es una solución.

Daisetsu
fuente
0

Haga otro pago en una carpeta nueva.

cd ..
svn checkout  /path/to/repo clean_working_copy

Si reutiliza clean_working_copy, no olvide actualizar antes

svn update clean_working_copy

Luego compare su archivo con el de clean_working_copy

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

O con su diferencial de 3 vías preferido (el mío es kdiff3)

kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html
Ghislain Hivon
fuente
Este trabajo, pero un scm debería proporcionar una forma más integrada.
rds
0

Yo creo que

svn diff -r HEAD

Casi da lo que quieres. Lo único es que los + y - se invierten en relación con lo que esperas.

Confusión
fuente