Tuvimos una rama de SVN recientemente que se había fusionado de nuevo a trunk, y se necesitaba algo más de trabajo en esa característica/área funcional. Sugerí usar la misma rama, pero me dijeron que no debías reutilizar una rama una vez que se haya integrado en el enlace troncal (se proporcionó una referencia en documentos SVN, no puedo encontrarla ahora). Eso sugiere que una rama es bastante inútil una vez que se fusiona con el tronco, por lo que mi pregunta es cuando ya no se necesita una rama, ¿debería simplemente eliminarse o guardarse?¿Qué se supone que debes hacer con las antiguas ramas de SVN?
Respuesta
Cuando integro una rama, la muevo de branches/
a branches/integrated/
. Mantiene el branches/
limpio, por lo que es fácil encontrar el trabajo actual, pero también hace que sea fácil desenterrar las ramas antiguas para ver qué cambios se realizaron sin necesidad de realizar una gran cantidad de arqueología de revisión.
Después de un período de tiempo cuando el proyecto termina, elimino ramas antiguas.
Puede reutilizar los nombres de las sucursales, pero ¿por qué? Los nombres son baratos. No llame "trabajo" a su sucursal, sino más específico, como "conversión de datos fase 1".
¿Qué sucede si eliminas una rama y luego tratas de crear otra con el mismo nombre? en nuestro caso, tuvimos uno (pensé) un nombre específico como "conversión de datos", ¡sin saber que alguna vez tendríamos una fase 2! –
Las ramas (la antigua que eliminó y la nueva que creó con el mismo nombre) son distintas y no comparten el historial de revisión. Solo tienen un nombre similar, pero también podrían haber recibido diferentes nombres a medida que obtienes el mismo efecto. –
PUEDE reutilizar los nombres de las sucursales. Solo trato de no hacerlo. En su caso, yo haría "conversión de datos" y luego cuando descubrí que la fase dos tenía que pasar, que sea "conversión de datos fase 2". –
Recomendaría no eliminar ramas antiguas a menos que estén causando problemas. En realidad, no le ahorra espacio, y hace que sea más fácil mirar versiones antiguas si es necesario.
Reutilizar una rama después de que se haya fusionado con el tronco es casi seguro que es una mala idea.
yup, reutilizar un nombre de rama es como reutilizar los calcetines de ayer – shfx
SVN 1.5 introdujo la propiedad "mergeinfo", que le permite reintegrar fácilmente ramas al tronco mientras admite actualizaciones de ramas repetidas. Esto le permite crear una bifurcación, actualizar periódicamente la bifurcación desde el enlace troncal y, finalmente, reintegrar la bifurcación al enlace troncal (svn merge --reintegrate). Esto es útil, por ejemplo, cuando se crea una rama para corregir un error o para desarrollar una funcionalidad.
La forma en que se implementa mergeinfo no le permite realizar una reintegración posterior, por lo que esta es la razón por la que se recomienda no volver a utilizar la rama.
Esto es problemático para "ramas de liberación" cuando desea desarrollar las correcciones de errores en la rama de liberación y realizar la reintegración periódica al tronco.
Si desea volver a utilizar una rama, el patrón habitual es crear una nueva copia (rama) con el mismo nombre:
- eliminar la rama
- cometer
- recrear la rama (ramificación en un camino con el mismo nombre)
- cometer
- trabajo en la nueva rama
Cuando "recrea" la bifurcación, en el paso 3, mergeinfo se restaura, por lo que puede reinsertarse en el futuro sin problemas.
Volver a su pregunta: "¿Entonces mi pregunta es que una rama ya no es necesaria, simplemente debería ser eliminada o guardada?" Guardaría la rama, por lo que sería visible en la revisión HEAD. La desaparición de las ramas es confusa ("oye, ¿creamos una rama para el lanzamiento 0.1 la semana pasada?" "Mmm, no recuerdo ... revisa la historia del repositorio")
En cuanto a la reutilización de la sucursal, lo haría use la convención para nunca reutilizar una rama, y si necesita "agregarle algo", vuelva a crearla. Pero en mi opinión, es mucho más claro utilizar un nombre de rama diferente. Probablemente pueda usar una convención de nomenclatura para identificar las ramas. Por ejemplo, el original sería branches/Issue-1 y subsiguientes extensiones branches/Issue-1.0, branches/Issue-1.1, etc.
Mergeinfo references.
http://blogs.open.collab.net/svn/2008/07/subversion-merg.html http://blogs.open.collab.net/svn/2009/11/where-did-that-mergeinfo-come-from.html
La buena práctica, mientras que el desarrollo a grandes proyectos, es nombrar sus ramas utilizando nombres de tareas de proyecto herramienta de seguimiento: por ejemplo, "DEV-1512", "FEAT-512", o bugtracker tickets: "BUG-5142", etc.
Cuando la tarea se completa, se inicia y se ejecuta en el servidor de producción, elimine la rama. Siempre puedes fusionar de nuevo.
PS. Imagínese runung svn ls
en $ repo/ramas con 9.999 sucursales;)
. Puedo ver completamente el beneficio de incluir el número de rastreo, pero también tengo algo descriptivo. FEAT-132-image-blur-function, solo para evitar tener que buscar esos números para otros miembros del equipo. –
From Wikipedia: "Una vez que una rama se ha cortado o de cualquier otra manera separada de su fuente, que se conoce más comúnmente como un palo"
Creo que deberías crear un directorio "sticks" al mismo nivel que las ramas
+1 por ingenio – Kyle
- 1. ¿Se supone que debes registrar el archivo R.java en VCS?
- 2. ¿Qué se supone que debe hacer esta sintaxis?
- 3. ¿Cómo se supone que debes usar ShapeDrawable con PathShape para dibujar una línea en una vista personalizada?
- 4. restringir git svn a las ramas
- 5. Svn fusión troncal y ramas
- 6. git-svn fusionar 2 ramas svn
- 7. ¿Para qué se supone que se utiliza la anotación javax.inject.Named?
- 8. ¿Por qué no funciona std :: noskipws, o qué se supone que debe hacer?
- 9. ¿Qué se supone que significa una "aplicación" de Django?
- 10. ¿Qué ocurre si call_user_func se supone que devuelve false?
- 11. ¿Se supone que debes dejar Redis abierto, o abrirlo y cerrarlo después de cada uso en el nodo?
- 12. ¿Cómo se supone que se usa RedirectToRoute?
- 13. WPF: ¿Se supone que soy un diseñador?
- 14. ¿Se supone que 'eval' es desagradable?
- 15. Si no podemos enlazar un comando de MouseBinding, ¿qué se supone que debemos hacer?
- 16. git-svn clon | ramas espurias
- 17. ¿Se supone que los comentarios Pascal anidan?
- 18. Git-Svn dcommit provoca división de ramas
- 19. ¿Qué se supone que debe hacer exactamente este archivo por lotes?
- 20. git-svn no se compromete a ramas, tronco único
- 21. ¿Cómo se diferencian las "JVM modernas" de las JVM antiguas?
- 22. Cómo importar ramas y etiquetas svn en git-svn?
- 23. ¿Cómo fusiono dos ramas de SVN?
- 24. ¿Se supone que debo usar CanCan con Devise?
- 25. ¿Cómo se puede usar git-svn para clonar partes de un repositorio SVN, pero todavía obtener todas las ramas
- 26. Cómo sincronizar ramas remotas con troncal usando git-svn
- 27. Etiquetado de un checkout SVN con externos en las ramas de desarrollo
- 28. fsync, sync: ¿realmente hace lo que se supone que debe hacer?
- 29. fusionar 2 ramas de svn juntas
- 30. git gui que muestra bien las ramas
Lo llamé ramas-cementerio. –
He usado "ático". –
Para entretenerme, también utilizo el comentario sobre la confirmación de 'Podaderas viejas podadas' –