¿Cuál es la forma correcta de fusionar dos proyectos en el software de control de código fuente?


8

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. Se fusiona a 1.8 !!


44
El sonido es que estás complicando demasiado las cosas. ¿Qué tiene de malo un "repositorio de fósiles que simplemente está muerto"? Reemplace "muerto" por "archivado" y ya no suena tan negativo.
Doc Brown

44
He hecho esto antes con Mercurial, mi consejo sería marcar el proyecto antiguo como archivado en algún momento y copiar los recursos que necesita al nuevo, porque si realmente no necesita el historial antiguo no es necesario fusionar ambos proyectos.
Timoteo Ponce

¿Qué te impide fusionarte? E incluso si se fusiona, el viejo baúl seguirá allí. La fusión no elimina ramas, solo combina archivos de la rama A a la rama B.
NickL

Creo que lo que me impide fusionarme es que tengo dos fósiles diferentes a.fósil y b.fósil, así que no estoy seguro de cómo obtendría toda la historia y la información de registro para estar presente en el segundo fósil. Ahora que soy mucho mayor, creo que la pregunta es cómo fusionar dos repositorios en uno.
Mallow

Respuestas:


1

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/fossil-users@lists.fossil-scm.org/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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.