Estoy usando Fossil-SCM para mantener mis proyectos. Como no trabajo en un equipo, generalmente tengo una rama de desarrollo muy lineal: 1.0 -> 1.1 -> 1.2
Me pregunto cuál es el procedimiento cuando tienes un proyecto cuya tarea está por asignarse a un proyecto relacionado. Y con ello, el primer proyecto queda obsoleto. Aunque tiendo a reescribir la mayor parte de mi código si no recuerdo haberlo escrito, todavía me gustaría mantener el código archivado. Y prefiero no tener un repositorio fósil que simplemente esté muerto. ¿Puedo fusionarlo? ¿Es esa la forma correcta de manejar esto?
Por ejemplo, el código extraía datos de un archivo de Excel para formatear una página HTML. Ahora, he convencido a mi empleador de mover su hoja de cálculo de Excel a una base de datos para disminuir la redundancia, aumentar la eficiencia y yaddy yadda. Como ahora puedo hacer consultas lógicas que no tienen que saltar los aros para preformar usando la base de datos, no necesitaré los archivos vbs adicionales que originalmente manipularon el archivo de Excel. Técnicamente, estaría transfiriendo parte del código existente al nuevo proyecto actual.
Como ya tiene su propia troncal, ¿sería aconsejable combinar la troncal de un proyecto diferente a este, y cómo lo haría exactamente?
Entonces, supongo que mi árbol se vería así, y no he visto ejemplos de ramificaciones de software que se parezcan a este árbol invertido antes, así que me pregunto cuál es la norma para una situación como esta.
Respuestas:
La mejor manera de fusionar proyectos depende un poco de cómo desea administrar su historial y de si espera que continúen evolucionando por separado.
Manténgalos separados: use elementos externos / submódulos
Una muy buena técnica a considerar sería la de los submódulos. Git y svn tienen este concepto (llamados externos en svn), pero desafortunadamente, parece que los fósiles no ( https://www.mail-archive.com/[email protected]/msg14798.html )
Pero la idea es que puede tener un proyecto que DEPENDE de otro proyecto, y simplemente seleccione qué rama o etiqueta o confirmación individual de ese otro proyecto que desea usar en el proyecto de referencia.
Solo cópialo
Si solo desea levantar un montón de código, y NO le importa el historial, simplemente puede agregar una carpeta con el nuevo código y confirmarlo.
Simplemente copie pero conserve el historial anterior
Si desea fusionar el código del segundo proyecto en el primero y preservar el historial, al menos con git, puede usar git merge (consulte https://saintgimp.org/2013/01/22/merging-two-git -repositorios-en-uno-repositorio-sin-perder-historial-de-archivo / por ejemplo). git permite apuntar a otros repositorios como fuente de datos para fusionar (así es básicamente cómo funciona git pulls). No sé lo suficiente sobre fósiles para saber si la fusión de fósiles se puede usar de esta manera.
fuente