Mantener sincronizados directorios similares en un repo

14 views
Skip to first unread message

alfplayer

unread,
Apr 25, 2013, 10:45:17 AM4/25/13
to git-ar...@googlegroups.com
Buenas. Me presento: soy Esteban Carnevale (alfplayer), y participo en la distribución Parabola.

Mi problema:

Tengo varios subdirectorios similares de un repo git. Al hacer pull se actualiza uno de los subdirectorios (el que trabaja upstream). Quiero aplicar los commits que obtengo del pull en los otros. Es un proyecto simple en Bash y me gustaría mantener simple la gestión con git para varios que contribuyen al proyecto.

Lo mejor que se me ocurre son pipes asi para cada commit: "git format-patch ... | cambiar directorio en las rutas | git am ...".

Alguna idea mejor? Me gustaría algo como merge, rebase o cherry-pick pero editando automáticamente los diffs antes de aplicarlos?

Joaquín Vicente

unread,
Apr 25, 2013, 11:49:53 AM4/25/13
to git-ar...@googlegroups.com
Los directorios son iguales o similares?
Me parece que lo mejor sería lograr que esos directorios sean iguales, parametrizando lo que sea necesario por fuera de esa carpeta. De ese modo, lo que tendrías que hacer sería simplemente hacer un hook para copiar los cambios.
Igual no se si esa solución es factible con tu caso


2013/4/25 alfplayer <alfpl...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "Git Argentina" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a git-argentin...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Esteban V. Carnevale

unread,
Apr 25, 2013, 12:32:22 PM4/25/13
to git-ar...@googlegroups.com
Los directorios son perfiles/configuraciones. El software es para crear ISOs, y los directorios representan variantes de ISOs. Ahora son muy similares pero pueden diverger más en el futuro.

La idea de parametrizar me parece interesante. Creo que es posible, aunque no me parece lo ideal porque upstream es el que conduce el proyecto (por ejemplo, tienen la mayoría de la documentación) y tengo intención de mantener mi proyecto similar al de upstream y asi seguirlo con poco esfuerzo. No quiero liderar el proyecto sino mantener un fork con mínimas diferencias.

También pensé en submódulos, aunque sería una barrera adicional para el que quiere contribuir y conoce poco de git.

Quizá sea posible con un merge driver para modificar el directorio en las rutas de los archivos antes de completar el merge. Esto debería aprenderlo porque nunca lo usé.

Esteban V. Carnevale


2013/4/25 Joaquín Vicente <joa...@gmail.com>

Daniel Moisset

unread,
Apr 25, 2013, 12:59:38 PM4/25/13
to git-ar...@googlegroups.com
Si bien muchas de las soluciones alternativas que te dan aca pueden "andar", si tenes varias variantes de lo mismo que tenes que mantener juntas, deberías considerar poner un branch para cada una, con ese modelo vas a tener todos los beenficios de siempre.

Si puede que se complique un poquito tu proceso de release, en el sentido que vas a tener que sacar los directorios uno de cada branch, pero considera el tradeoff

Saludos,
   D.


2013/4/25 alfplayer <alfpl...@gmail.com>

--

Sebastian

unread,
Apr 25, 2013, 2:07:29 PM4/25/13
to git-ar...@googlegroups.com
Quizás como alternativa sería mejor tener un sólo source para todos los directorios, y agregar `if [ CONF_IS_SOMETHING ];` para los bloques específicos de cada uno. No sé si es posible, sino un pre-procesamiento que genere los outputs para cada directorio puede ser mejor.

Me suena que git no es la herramienta que se debería encargar de eso.

Esteban V. Carnevale

unread,
Apr 25, 2013, 2:58:08 PM4/25/13
to git-ar...@googlegroups.com
Con ramas sería diferente a usar un merge driver o la solución con format-patch y am.

Para el release hago el tarball con "git archive ...". Si cambio a ramas podría poner los directorios en el árbol de trabajo y crear el tarball con el comando tar.

Pensando nuestro caso imagino que puede funcionar muy bien también.

Esteban V. Carnevale


2013/4/25 Daniel Moisset <dmoi...@machinalis.com>

Esteban V. Carnevale

unread,
Apr 25, 2013, 5:21:02 PM4/25/13
to git-ar...@googlegroups.com
Por alguna razón no salió mi respuesta al de Sebastian.

Si entendí esa es la idea de parametrizar, lo que no es ideal para ya que habrían demasiadas variables porque los directorios pueden diverger mucho.


Esteban V. Carnevale


2013/4/25 Sebastian <sepp...@gmail.com>

Esteban V. Carnevale

unread,
Apr 25, 2013, 5:29:08 PM4/25/13
to git-ar...@googlegroups.com
Buscando encontré otra posibilidad: iterando cada subdirectorio hacer git-filter-branch ... subdirectory-filter y después usar el repo filtrado para hacer subtree merge (-Xsubtree=SUBDIRECTORIO).

Tengo varias cosas para probar.

Gracias.


Esteban V. Carnevale


2013/4/25 Esteban V. Carnevale <alfpl...@gmail.com>
Reply all
Reply to author
Forward
0 new messages