tortoise subversion son que estructura create branches svn merge branch ankhsvn trunk

subversion - tortoise svn merge branch to trunk



¿Puedo actualizar una rama desde el troncal sin realizar una fusión? (5)

La idea es que quiero mantener mi sucursal actualizada con cualquier compromiso que otros desarrolladores puedan estar haciendo en el maletero para que cuando finalmente combine mi rama en el maletero, todo vaya (como) suavemente (como sea posible).

Para lograr eso, necesita hacer fusiones de revisión de rango desde el enlace troncal. En realidad, es una buena práctica hacer este tipo de fusión con una sucursal de vez en cuando para estar al día con lo que está sucediendo en el maletero.

No conozco las herramientas para AnkhSVN, pero SVN ''puro'' tiene muy buenas herramientas que hacen que las operaciones de fusión sean bastante simples. TortoiseSVN es una gran herramienta para Windows y, si te gusta Netbeans también hay un muy buen soporte gráfico para la fusión.

Probablemente no haya pensado en esto, o tal vez simplemente desconozco una opción ya existente en Subversion (ciertamente no soy un experto).

Me pregunto si he creado una sucursal para comenzar a trabajar en una nueva característica, si hay una manera más fácil de mantener la sucursal actualizada con las revisiones más recientes de la troncal sin tener que pasar por todos los problemas de fusionar una gama de revisiones. Me gustaría poder simplemente actualizar y obtener todas las revisiones del tronco ( y la rama, por supuesto), mientras que mis cambios comprometidos solo afectan a la rama. es posible? ¿Tiene sentido lo que estoy preguntando?

Supongo que esto no es necesariamente diferente de combinar una serie de revisiones; es solo que uso AnkhSVN, que realiza todas estas comprobaciones de las mejores prácticas antes de permitir una fusión, y a veces parece que es mucho más complicado de lo que debe ser. La idea es que quiero mantener mi sucursal actualizada con cualquier compromiso que otros desarrolladores puedan estar haciendo en el maletero para que cuando finalmente combine mi rama en el maletero, todo vaya (como) suavemente (como sea posible).


Mantener su sucursal hasta la fecha con los últimos check-ins troncales se llama fusión.

Sé que la fusión puede ser una pesadilla real a veces, pero esto es precisamente lo que es la fusión.




TL; DR; No debe fusionarse, aquí hay algunas instrucciones

No es tan malo como crees que es. Describiré los pasos desde la línea de comando que uso. Voy a usar vimidiff para administrar los conflictos, puedes usar Meld o alguna otra herramienta de diferencias que te guste. Los comandos están precedidos por la marca hash ''#''

<in branch first time from copy> # svn log --stop-on-copy | tail <read the revision that was the copy instruction in this case r229> # cd ../../trunk # svn up <I make note of the latest rivision which is r334> <now I go back to the branch> # cd ../branches/branch # svn merge -r229:334 svn://url.to.svn.server/project/trunk <a whole bunch of stuff happens> < now I check for conflicts > # svn status | grep ^C <which outputs something like> C public/tools/Diagnostic.class.php C public/domain/Report_Setup_Parameter.class.php C public/modules/mReports.module.php <I now revert all these and manually merge them> # svn revert public/tools/Diagnostic.class.php ... <revert done now manuall doinng the merge # vimdiff public/tools/Diagnostic.class.php ../../trunk/public/tools/Diagnostic.class.php ... <now all the changes are done> # svn commit -m "Merging trunk into branch ''branch'' r:229:334" commited revision 335

Hecho, si lo haces regularmente, entonces no hay muchos cambios. Después de la primera combinación, debe usar el número de revisión de la última fusión. Por lo tanto, en algún momento en el futuro el comando buscaría en el registro svn para encontrar cuándo era la revisión de la última fusión, en este caso 335. El comando de fusión se vería como thuse

# svn merge -r335:370 svn://url.to.svn.server/project/trunk

Todos los demás pasos son iguales.