2012-06-26 19 views
6

Me gustaría bifurcar un repositorio de Git, convertirlo a Mercurial y contribuir con mis cambios al repositorio original de Git cuando haya terminado. Me preocupa más un proceso de conversión seguro y estable que su conveniencia. Seré pull cambios de Git en Mercurial de forma regular, pero rara vez contribuyo con cualquier cambio.¿Parches de contribución de Mercurial a Git?

No me siento cómodo usando hg-git porque muchos de los errores reportados en el proyecto no han sido respondidos durante años. Sospecho que es más seguro usar hg convert para convertir Git a Hg que usando hg-git.

Mi pregunta es: digamos que ya he convertido el repositorio a Mercurial e hice algunos cambios, ¿Cómo contribuyo estos cambios al repositorio oficial? Me gustaría contribuir con mis cambios al repositorio oficial de Git sin perder ninguna información de historial (es decir, no quiero plegar múltiples conjuntos de cambios en uno).

¿Cuál es la forma más fácil y segura de hacer esto?

+2

Existen razones para utilizar un scm moderno cuando un proyecto se aloja oficialmente en algo como svn o cvs, por lo que la amplia disponibilidad de herramientas para hacerlo tan fácil. Pero si el proyecto ya está alojado en un scm moderno, entonces hay muchas menos razones para no usar el mismo scm localmente. – bames53

+0

@ bames53, estoy de acuerdo, pero al igual que muchas otras decisiones que tomamos a diario, esta es puramente subjetiva :) – Gili

+1

Sólo para estar seguro, ¿sabes que el enlace no es para el repositorio oficial de hg-git? Eso se puede encontrar [aquí] (https://github.com/schacon/hg-git). – obmarg

Respuesta

6

Usted puede tratar de exportar su Mercurial se compromete en forma de parches:

hg export --git -r 1 >patch.diff 

Este archivo .diff debe ser reconocido por Git y podrían añadirse al repositorio git con git apply.
(esto fue sugerido en "Convert a Mercurial Repository to Git", donde también se ha mencionado más arriba-a-fecha script hg-fast-export)

La opción de --githg export se asegurará de que usted genera diferenciaciones en el TGI formato extendido diff. Consulte hg help diffs para obtener más información.

+0

¿Esto no colapsará múltiples conjuntos de cambios en uno? – Gili

+0

@Gili: si es así, simplemente enumeraría todas las revisiones de Hg que le interesan y, para cada una, generará un archivo '.diff' (que aplicaría a su vez a su repositorio de Git). 'hg export' puede tomar una sola revisión o un rango de revisión. – VonC

+0

Ejecuté una prueba rápida: 'hg export --git -r 1 -r 2> patch.diff' incorpora ambas revisiones en el mismo archivo pero proporciona suficiente información para qué cambios entran en cada conjunto de cambios. Creo que esto funcionará ¡Gracias! – Gili

Cuestiones relacionadas