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.


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.


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).


¿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
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.