Estoy usando Git-Svn para interactuar con un repositorio Svn en el trabajo y parece que no puedo encontrar una manera de resolver conflictos de manera efectiva por mi vida. He leído otras preguntas sobre este tema, pero evidentemente necesito algo aún más correctivo porque siempre parezco terminar en un ciclo sin fin. Rebase, use mergetool (meld) para resolver mis conflictos y, cuando llegue al final de todo eso, trato de hacer un dcommit y me sale un conflicto de combinación durante el error de confirmación.Resolviendo conflictos Git Svn
Sé que esto se siente como un duplicado, pero la frustración me hace preguntar de nuevo, con algunos detalles muy específicos acerca de cómo voy sobre esto para que con suerte alguien pueda decirme exactamente dónde está arruinado mi proceso.
Mi configuración:
que tienen una sucursal remota (svn/trunk), una rama local (tronco) y la otra rama local que suelen trabajar en (tronco de trabajo). el tronco fue extraído de svn/trunk y el tronco de trabajo fue extraído del tronco.
Esto es lo que he estado haciendo:
- En mi baúl,
git svn rebase
(devuelve conflictos) git mergetool
- [resolver los conflictos de ese archivo]
- guardar el archivo resultante de la fusión de meld y close meld.
git add .
git rebase --continue
- [enjuagar, repetir]
- Si consigo un mensaje preguntando si he usado
git add
, megit rebase --skip
Cuando llegue al final de todos los cambios reportados, todo se detiene y creo que tal vez no estoy seguro de qué hacer en este momento. Git no muestra nada que confirmar y parece que estoy de vuelta en el maletero. Git luego me permite comprometerme, pero si pruebo una rebase inmediatamente después, termino resolviendo los conflictos que acabo de resolver.
Claramente hay una pieza crítica que me falta aquí, pero simplemente no la veo y está causando muchos problemas y frustración. Las fusiones pueden ser fáciles en Git, pero estoy seguro de que no es así.
Gracias.
ACTUALIZACIÓN: Solo quería lanzar una actualización rápida para describir mi flujo de trabajo en caso de que sea una parte (o la totalidad) del problema.
Para comenzar, después de clonar mi repositorio con un prefijo svn/
, tengo mi rama remota svn/trunk
. Dado que:
- I
git co -b trunk svn/trunk
para ver mi control remoto en una sucursal local. - I
git co -b working-trunk
para crear una rama de trabajo que utilizo para crear un grado de separación más para que mi troncal local siempre pueda reflejar mi troncal remota. - Elimino la rama maestra predeterminada (cuando trabajo con svn, me resulta más fácil pensar en términos de "troncal" en lugar de "maestro").
Una vez que tengo todos mis ramas, mi flujo de trabajo típico se parece a esto:
- En trabajo tronco, hago mis cambios y Commit.
- I
git co trunk
y hacer ungit svn rebase
. - Suponiendo que se ha vuelto a establecer el código nuevo, I
git rebase working-trunk
. git co working-trunk
git merge trunk
git rebase trunk
git co trunk
git merge working-trunk
git svn dcommit
Es un montón de pasos, lo sé, pero eso es lo que todo el mundo aquí y en otros lugares ha recomendado. ¿Podría mi falla fatal estar en algún lugar de ese proceso?
Gracias de nuevo.
¿La respuesta fue? elegido (Jistin) resolver el problema? – inger