2010-03-05 15 views
8

Mon lieu de travail utilise actuellement CVS. Une migration de git est prévue, mais cela pourrait prendre du temps. En attendant, j'ai un projet d'un seul homme, et j'ai décidé d'utiliser git pour mon propre développement personnel. Les branchements, mises en scène, rebasing etc a été fantastique! Mais malheureusement, à un moment donné, ce projet, et son histoire, doit être importé dans CVS, afin que d'autres puissent vérifier mes progrès.Comment guérir VC avec git alors que vous êtes obligé d'utiliser CVS au travail?

Quelle est la meilleure façon de ...

  • importation du projet en cours (idéalement comme un ensemble de commits/révisions distinctes) dans CVS
  • permettent les importations répétables de changements futurs dans CVS
  • (question de bonus - idéal mais pas obligatoire) fusionner tous les changements CVS par d'autres développeurs dans git

Rien n'est dans CVS pour le moment, si c'est important. (Et si j'avais mon chemin, rien ne serait jamais dans CVS, mais je suis coincé avec ça pour l'instant!) Merci d'avance!

+0

git peut agir comme un serveur cvs, et je suis sûr qu'il peut tirer de cvs (à peu près comme 'git-svn'). – hasen

+0

duplication possible de [Comment exporter l'historique des révisions de mercurial ou git à cvs?] (Http://stackoverflow.com/questions/584522/how-to-export-revision-history-from-mercurial-or-git-to -cvs) – Mark

+0

Merci, la réponse est vraiment bonne. Heureusement, nous avons déménagé à git maintenant :) – rjh

Répondre

2

Bien que je n'ai aucune connaissance explicite de CVS, je suggère la configuration suivante.

  • Work\Project.git < - git
  • Sync\Project < - clone git de la branche principale dans ..\Work\Project.git + CVS contrôle de version sur ce dossier.

Que vous pouvez faire tous vos trucs git dans Project.git et quand vous voulez importer dans CVS, vous allez à Sync\Project et faire un git pull pour rejouer les changements dans votre synchronisation dir (peut-être que vous devez faire un répertoire complet caisse dans CVS?). Pour le scénario inverse, vous devrez peut-être travailler avec la branche d'importation, mais je pense qu'il serait possible d'obtenir les modifications de vos collègues dans le dossier de synchronisation, mais de les importer dans une nouvelle branche et de les fusionner avec votre branche principale que vous avez tirée de votre référentiel git principal. Après cette fusion, vous pouvez git push les modifications à votre Work\Project.git.

Essentiellement, utilisez votre référentiel de synchronisation comme si vous étiez un autre développeur. Vous pouvez même laisser le dépôt régulier sortir de votre synchronisation (donc envoyez une demande de pull à vous-même ;-)) ou utilisez le mécanisme de patch git send pour mettre à jour votre dépôt git principal.

Importation de l'ensemble de modifications CVS dans git, il y a un git-cvsimport qui devrait vous aider avec cela.

+0

Cela semble bien, la seule chose qu'il ne gère pas est de préserver mon historique de révision existant. git-cvsexportcommit est un peu instable. – rjh

+0

hmm .. bien vous pourriez générer des correctifs à partir de votre repo git, et les rejouer comme valide dans votre repo de synchronisation.Avec un peu de temps, vous pourriez même écrire un script pour ça. –

+0

J'expérimente, ça va impliquer beaucoup de travail manuel, mais c'est faisable. Merci pour la réponse détaillée! – rjh

2

git cvsimport et git cvsexportcommit peut vous donner un flux de travail similaire à git svn