2011-06-06 16 views
57

Estoy tratando de fusionar los últimos cambios del tronco en una rama de mi proyecto, pero el problema es que no sé qué revisión revisé del maletero que eventualmente creó la rama desde. Creo que SVN registró esto en alguna parte. ¿Alguien sabe cómo puedo encontrar el número de revisión?Buscar la revisión en el tronco que se creó una rama desde

+0

Si está utilizando svn 1.5 o posterior, no necesita saber este número de revisión para realizar la fusión. 'svn merge ^/trunk .' lo resolverá por sí mismo. Si eso no está sucediendo, es posible que tengas que 'svnadmin upgrade' tu repositorio. – slowdog

+0

Hmmm ... Subclipse pide la revisión de inicio, tendré que ver si se puede hacer una fusión de esta manera – Andy

Respuesta

67

Desde la línea de comandos, el --stop-on-copy bandera se puede utilizar para ayudar a mostrar que el que ha copiado una rama de:

svn log --verbose --stop-on-copy $REPOSITORY/branches/feature 

La última línea de la voluntad de decir algo como esto:

Changed paths: 
    A /branches/feature (from /trunk:1234) 
+0

ahh hombre. ¡Ojalá hubiera una opción de "parar en N copias"! tendrá que atravesarlos manualmente. ¡Gracias! – Andy

+0

Creo que un movimiento svn se tomará como una "copia" ... ya que es una copia y se elimina de una vez. Entonces, si creas una rama, y ​​luego le cambias el nombre (renombra como en el comando tortuga para cambiar el nombre), arrojará el "¿cuándo comenzó esta rama?" datos. Solo menciono esto porque "renombrar" no suena como "crear" ... lamentablemente lo aprendí de la manera difícil. – granadaCoder

12

¿Está utilizando TortoiseSvn o línea de comandos?

Línea de comando: svn log --stop-on-copy y luego observe el número de rev más pequeño.

Tortoise SVN: right-click, tortoise-svn, show log, make sure 'stop on copy' is *checked* and press refresh. Scroll to the bottom and find the smallest rev number. enter image description here

+0

en realidad estaba usando Subclipse – Andy

+1

No es completamente correcto. Al crear una rama, puede especificar en qué revisión se basa la rama (utilizando -r), por ejemplo. 'svn copy -r 1234 svn: //foo.com/trunk svn: // foo.com/branches/b1'. La revisión base no es necesariamente la misma en la que se creó la rama. La respuesta de @ richq muestra cómo obtenerlo correctamente. – harmic

2

Si ha utilizado para crear un svn copytag/branch, entonces svn log se puede decir de donde se copió su materia en la rama. Por ejemplo, digamos que tenemos svn://svn/trunk/foo y hemos creado una rama svn://svn/branches/super_foo. Ejecute svn log -v svn://svn/branches/super_foo, le dirá algo como esto - /branches/super_foo from /trunk/foo:22890, lo que significa que ha copiado la revisión 22890 de la línea troncal en su sucursal.

0

Para la aplicación Cornerstone, para ver dónde se originó una etiqueta o una sucursal, busque en la línea de tiempo.

9

Quizás un poco tarde pero.

Si en la actualidad en la rama puede ejecutar:

svn log -r 1:HEAD --limit 1 --stop-on-copy 

Se muestra la primera revisión de la rama es decir, cuando la creó.

+0

Esta es la respuesta correcta. No enumera miles de revisiones inútiles, solo para ver el último. – bobbogo

+1

Sugeriría agregar la opción '-v' al comando anterior para que también pueda obtener el mensaje' (from path: rev) '. –

Cuestiones relacionadas