2010-03-05 14 views
8

Mi lugar de trabajo actualmente usa CVS. Se planea una migración de git, pero podría tardar mucho tiempo en llegar. Mientras tanto, tengo un proyecto de un solo hombre y he decidido usar git para mi propio desarrollo personal. ¡La ramificación, los compromisos escalonados, el rebasado, etc. han sido fantásticos! Pero, lamentablemente, en algún momento, este proyecto y su historia deben importarse a CVS para que otros puedan verificar mi progreso.Cómo guerrillear VC con git mientras se ve obligado a usar CVS en el trabajo?

¿Cuál es la mejor manera de ...

  • importar el proyecto actual (idealmente como un conjunto de confirmaciones/revisiones separadas) en CVS
  • permitir la importación repetibles de futuros cambios en el CVS
  • (pregunta de bonificación: ideal pero no necesaria) fusionar cualquier cambio de CVS por parte de otros desarrolladores en git

No hay nada en CVS por el momento, si es que importa. (Y si hiciera lo que quisiera, nada podría estar en CVS, ¡pero estoy atascado por el momento!) ¡Gracias de antemano!

+0

git puede actuar como un servidor CVS, y estoy bastante seguro de que también puede tirar de cvs (más o menos como 'git-svn'). – hasen

+0

posible duplicado de [¿Cómo exportar el historial de revisión de mercurial o git a cvs?] (Http://stackoverflow.com/questions/584522/how-to-export-revision-history-from-mercurial-or-git-to -cvs) – Mark

+0

Gracias, la respuesta es realmente buena. Afortunadamente nos hemos movido a git ahora :) – rjh

Respuesta

2

Si bien no tengo conocimiento explícito de CVS, sugeriría la siguiente configuración.

  • Work\Project.git < - git repo
  • Sync\Project < - git clone del maestro sucursal en ..\Work\Project.git + CVS control de versiones en esta carpeta.

de lo que puede hacer todas sus cosas git en Project.git y cuando se desea importar en CVS, ir a Sync\Project y hacer un git pull para reproducir los cambios en su sincronización dir (tal vez lo que necesita hacer un directorio completo pago en CVS?).

En el caso inverso, puede que necesite trabajar con la rama de importación, pero creo que sería posible obtener los cambios de sus colegas en la carpeta de sincronización, pero realice esa importación en una nueva rama y fusione eso con su rama principal que extrajo de su repositorio principal de git. Después de esta combinación, puede git push los cambios a su Work\Project.git.

Básicamente, use su depósito de sincronización como si fuera otro desarrollador. Incluso puedes dejar que el repositorio regular se desconecte de tu sincronización (así que envía una solicitud de extracción a ti mismo ;-)) o utiliza el mecanismo de revisión de envío git para actualizar tu repositorio principal de git.

Al importar el cambio de CVS en git, hay un git-cvsimport que debería ayudarlo con eso.

+0

Esto suena bien, lo único que no maneja es preservar mi historial de revisión existente. git-cvsexportcommit es un poco inestable. – rjh

+0

hmm .. bueno, podrías generar parches desde tu repositorio de git y reproducirlos como confirmaciones en tu repositorio de sincronización.Con un poco de tiempo incluso podrías escribir un guión para eso. –

+0

Estoy experimentando, implicará mucho trabajo manual, pero es factible. ¡Gracias por la respuesta detallada! – rjh

2

git cvsimport y git cvsexportcommit le puede dar un flujo de trabajo similar a git svn

Cuestiones relacionadas