Estoy trabajando en una empresa que está utilizando CVS, por lo que HgSubversión no era una opción. Tenía la misma pregunta hace unos días y ha desarrollado un flujo de trabajo basado en esto:
http://momentaryfascinations.com/programming/how.to.use.mercurial.for.local.source.code.management.with.a.public.subversion.server.html
he creado un repositorio de Mercurial en mi repositorio CVS es, que me trato como "sólo lectura". Luego clono este repositorio hg "de solo lectura" en repositorios que funcionan, donde realizo cambios/correcciones localmente. He estado clonando el repositorio para cada característica y arreglo que hago, pero también podría tener solo un repositorio y usar una estrategia de ramificación diferente para administrar su desarrollo. Aquí está a good overview de tales estrategias.
La clave de este flujo de trabajo es tener ese repositorio de "solo lectura". Solía hacer mis cambios en el primer repositorio de Mercurial que creé, que estaba en la parte superior de CVS. Esto funcionó, pero se volvió confuso al actualizar desde CVS. Al tener esta capa adicional, puede encargarse de hacer sus propios cambios y actualizaciones de CVS por separado.
Teniendo en sincronía con CVS
Siempre que hay cambios en el CVS, hago una actualización de cvs. Para el repositorio hg "readonly", esto aparecerá como archivos modificados. Para sincronizar Mercurial, yo simplemente hago un
hg ci -m "Updated from CVS."
(Por lo tanto, verá una gran cantidad de esos mensajes en los registros de mi hg). En este punto, mi repositorio de "solo lectura" está sincronizado con CVS. Ahora puedo ir a cualquiera de los repositorios que he clonado y emitir un hg pull
y luego hg update
para sincronizarlos.
confirmar los cambios de hg volver a CVS
En la otra dirección, cuando quiero que se comprometan a CVS, Voy a entrar en uno de mis repositorios de trabajo donde me he comprometido mis cambios ya hg . Luego I hg push
mis cambios vuelven a "readonly", saltan al repositorio "readonly", hagan un hg update
. Desde la perspectiva de CVS, esto aparecerá como recién modificado. Luego hago un cvs commit
de nuevo en CVS. Aquí tendré que repetir/resumir en mi mensaje de registro el trabajo que he hecho en mi repositorio de hg.
Es cierto que hay puntos difíciles en este flujo de trabajo.Podría hacer múltiples cambios en hg, que suman solo un cambio en CVS/SVN, de modo que el historial no se mantendrá en CVS/SVN, y tendrá que resumir sus mensajes de confirmación. Tienes que administrar manualmente mantener CVS y tu repositorio de "solo lectura" sincronizados. La ventaja de esto es que no necesita instalar extensiones adicionales; solo está tratando con los archivos desde ambas perspectivas. Todo lo que está sucediendo es bastante transparente y bajo tu control.
Todavía estoy cortando los dientes en hg, pero hasta ahora este flujo de trabajo ha estado funcionando razonablemente bien.
Harvey ha proporcionado un diagrama agradable de esto y hace un excelente punto de que este flujo de trabajo se aplica a cualquier otro VCS:
alt text http://sr105.com/other_vcs_to_hg_workflow.png
pregunta similar aquí: http://stackoverflow.com/questions/799860/ using-mercurial-local-only-with-subversion-server. Considero que mi pregunta debería permanecer también; esta es una de esas preguntas que pueden redactarse de muchas maneras diferentes. –
Aaaand this one: http://stackoverflow.com/questions/826938/interoperation-between-mercurial-and-subversion –
Aquí está la misma pregunta en Kiln Overflow, o como se llame: http://kiln.stackexchange.com/ questions/948/can-i-use-mercurial-local-and-update-from-push-to-a-subversion-repository/950 # 950 –