Tener un repositorio de Git y mercurial en el mismo directorio

11

Explicaré mi problema

Actualmente estoy usando una instalación interna de gitorious usando git. Me gustaría comenzar a probar FogBugz y Kiln de Fog Creek, que utiliza mercurial. Me gustaría continuar durante al menos un tiempo mientras sigo desarrollando usando ambas soluciones.

¿Alguien sabe de algún efecto grave a largo plazo de tener un git y un repositorio mercurial en el mismo directorio? ¿O hay una mejor manera de mantener sincronizados git y mercurial server?

Lo he intentado con un repositorio de prueba y no he visto ningún problema.

Gracias por cualquier ayuda.

D. Mathis
fuente
1
No creo que haya mucho problema, ya que ambos están aislados a diferencia de los .svnarchivos de svn .
Josh K

Respuestas:

8

He encontrado que el puente hg-git es bastante útil en la otra dirección (exponiendo algunas cosas en Github que se construyeron originalmente usando Mercurial para el control de la fuente). Básicamente, "solo" usa mercurial, crea un marcador que vincula "maestro" al "predeterminado" cuando está listo para pasar a un repositorio de git, y presiona. Pull from git funciona de manera similar a como lo hace cuando extrae de un repositorio remoto. No terminas con archivos .git + .hg en este escenario, solo tienes archivos mercuriales en tu caja local, a menos que termines migrando a git por completo, en cuyo caso probablemente harías clon git en un nuevo directorio.

Hay un proyecto similar para los usuarios de git que desean empujar / extraer de los repositorios de Mercurial, pero no tengo experiencia directa con él. Ver https://github.com/offbytwo/git-hg

Aparte del potencial de registrar accidentalmente un montón de carpetas ocultas de su "otro" sistema de control de fuente, no veo ningún problema real al hacer hg init en un repositorio git; me parece menos torpe usar un puente y elegir explícitamente cuándo pasar al otro sistema dvcs.

JasonTrue
fuente
He encontrado que hg-git es un poco impredecible con SSH y es menos divertido configurarlo. Puede ejecutar ambos clientes DVCS en la misma máquina, sin problemas. De hecho, si está utilizando uno para el control de origen y el otro para impulsar la producción (Azure, Appharbor, etc.), entonces esto puede funcionar bien.
Bloque CAD
eche un vistazo debajo de la carpeta .hg. hg-git crea una carpeta .git allí a menos que especifique [git] intree = true en su archivo .hgrc / ini para mercurial.
CAD bloke
9

He usado tanto mercurial como git en el mismo proyecto, en el mismo directorio de trabajo. Lo mejor de usar estos dos DVCS es que ambos solo tienen una carpeta (.git / .hg) para sus confs y blobs y árboles y demás.

Simplemente coloque .hg en .gitignore (y .git en .hgignore) y estará más que listo.

Por supuesto, debe duplicar el trabajo al comprometerse, pero no me pareció difícil de manejar.

Esta configuración, en mi opinión, es mucho más confiable que usar cualquier solución de puente (no me gustan desde el horror que tuve con git-svn).

Vladaimir Cetkovic
fuente
¿Puedes dar más información sobre cómo lograste esto? Tengo una pregunta aquí stackoverflow.com/questions/14486600/… que parece haber sido lograda por usted. Cualquier ayuda es apreciada :)
akdsouza