2010-03-01 15 views
12

Estamos utilizando TortoiseSVN en un entorno de equipo. Cuando trabajo en una función más grande, creo una rama de características, trabajo una semana allí, fusiono los cambios del tronco a mi rama cada dos días y cuando la función está completa, la vuelvo a unir al tronco.TortoiseSVN: ¿Cómo fusionar la rama de nuevo al tronco sin cambiar la copia de trabajo al tronco?

Cuando la fusión, que siempre hago lo siguiente:

  1. cometer todo para la rama
  2. interruptor de toda la copia de trabajo en el tronco, el cambio (en su mayoría borrar) cientos de archivos
  3. uso "reintegrar a una sucursal "opción, fusionando los archivos cambiados/nuevos de la sucursal que ya estaban en el disco hace 30 segundos
  4. verifica que el código compila
  5. compromiso con el tronco

Esto me parece ineficiente: creo un grupo de archivos, elimínelos al cambiar al tronco y luego créelos nuevamente al fusionarlos en el tronco.

¿Hay alguna otra manera de combinar una rama en el tronco usando TortoiseSVN que sería más eficiente, sin tener dos copias de trabajo separadas? (que en realidad no es muy eficiente en nuestro escenario porque algunas dependencias usan rutas absolutas y necesito cambiarlas manualmente cuando quiero compilar desde otra copia de trabajo)

+3

¿Podemos suponer que no es posible cambiar las rutas absolutas?Cualquier cosa que se interponga en el camino de poder hacer un checkout (o exportar) a un directorio arbitrario y simplemente construir es algo con lo que uno debería lidiar si es posible y en este caso le permitiría mantener un tronco para fusionarse en – Murph

+1

Intenta mirar la función "Fusionar reintegrar", a la que se hace referencia aquí? http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-all – Amber

+0

¿Por qué no mantener 2 copias de su proyecto? Sigo con un tronco llamado y una rama llamada en mi espacio de trabajo eclipse. Luego, el flujo de trabajo se compromete a la bifurcación y luego vuelve a integrar la bifurcación en el enlace troncal. ¡Fácil! – PiersyP

Respuesta

13

No es posible fusionar y comprometer en SVN, sin tener una copia de trabajo del tronco (es decir, el objetivo de fusión). Esta no es una acción que se puede realizar directamente en el repositorio, ya que está modificando los archivos, y querrá verificar que se hayan fusionado correctamente antes de confirmar.

así que supongo que quiere básicamente un interruptor y fusión acción (o un interruptor de y fusión-reintegrarse). Por lo que sé, este comando no es provisto por SVN o TortoiseSVN, por lo que te quedas atascado haciéndolo de la manera que describes.

-2

He aquí un extracto del libro de SVN:

que necesitará una copia de trabajo de/tronco. Puede obtener uno haciendo un check de svn, extrayendo una vieja copia de trabajo de troncal desde algún lugar en su disco, o usando el interruptor svn (vea la sección llamada "Traversing Branches").

+0

La respuesta aceptada decía más o menos lo mismo hace 2 años, pero incluía una explicación. – Martin

0

Guardo una copia de trabajo de ambos en todo momento.

Si comprueba la raíz debajo del tronco y la rama, entonces tiene ambos disponibles, por lo que no es necesario cambiar de un lado a otro. Simplemente sube y baja por el árbol como lo harías con una estructura de archivos normal.

0

Sé que llego tarde a la fiesta, pero una idea sería utilizar el comando subst para hacer un punto de unidad virtual a la copia de trabajo activo:

cd \myproject\trunk 
subst z: . 
... use the trunk ... 
cd \myproject\branchxy 
subst /d z: 
subst z: . 
... use the branch xy ... 

De esta manera, se utiliza simplemente la subst -created letter en tus dependencias externas entrantes.

Cuestiones relacionadas