Migrer à partir de CVS à Git sans perdre l'historique
J'ai besoin de savoir si il existe un moyen de migrer mon code à partir de CVS contrôle de code source Git?
Si oui, qu'en mon historique de commits?
- ici, il y a une bonne réponse à votre problème 🙂 stackoverflow.com/a/17135045/2718509
- double possible de Est-il un outil de migration de CVS vers Git?
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas personnellement fait une conversion du dépôt CVS, Git, mais je crois que Eric Raymond est
cvs-fast-export
est l'outil à utiliser. Il a la page de man posté ici.cvsps
, un autre outil est maintenu par Eric, mais il a récemment été dépréciée en faveur decvs-fast-export
.cvs2git
est un autre outil qui est construit sur les mêmes machines quecvs2svn
. Ce dernier était extrêmement habile, et j'ai donc bon espoir quecvs2git
est tout aussi bonne.Une chose à noter: CVS est un assez cassé RCS. Il est possible qu'il puisse avoir un contenu qui ne peut pas être traduit exactement dans Git. OIE, il existe une certaine incompatibilité de l'impédance de là, mais les outils de essayer très difficile à préserver autant que possible. Assurez-vous de vérifier votre conversion et que vous êtes heureux avec les résultats. Vous pouvez avoir besoin de correction de la partie de l'historique de Git pour obtenir quelque chose de plus acceptable, mais je doute que vous aurez besoin de.
cvs-fast-export
à mon avis, a un gros défaut ... il utilise C. cela signifie Qu'il est plus difficile de déboguer les problèmes, précisément parce qu'il sort des trucs sur la sortie standard stdout et lit l'entrée standard stdin. Il a également renumérote les CVS des révisions de la façon dont ils apparaissent au RCS de fichier qui peut être source de confusion si vous essayez d'identifier les problèmes. Pourtant, ce devrait être la accepté de répondre. +1Voici le processus que j'ai utilisé pour la migration d'un CVS de SourceForge repo Git en utilisant cvs2git (dernière version stable est ici, mais autant que je me souvienne, j'ai utilisé le github dev version), qui fonctionne sur Windows et Linux sans aucune compilation nécessaire, puisque c'est juste Python:
Remarque:
cvs2git.options
est un format JSON fichier de configuration pourcvs2git
où vous pouvez spécifier des transformations pour diverses choses comme des noms d'auteur (de sorte que leurs surnoms seront automatiquement transformés à leur nom complet après l'importation). Voir la la documentation ici ou la exemple de fichier d'options.Également vous n'avez pas besoin de posséder le repo avec cette méthode, vous pouvez migrer SourceForge projets que vous ne possédez pas (vous avez juste besoin de la droite pour passer à la caisse, de sorte que cela fonctionne sur n'importe quel public de pensions de titres).
apt install cvs2svn
qui comprendcvs2git
Vous pouvez utiliser
git-cvsimport
pour importer vos CVS dans le dépôt Git. Par défaut, consultez chaque révision, vous donnant une relativement complète de l'histoire.Selon votre système d'exploitation, vous devrez peut-être installer la prise en charge de cette question séparément. Par exemple, sur une machine Ubuntu, vous aurez besoin de l'
git-cvs
paquet.Cette réponse va plus dans le détail.
git-cvsimport
est plus résistant w.r.t. questions dans le CVS de l'histoire, mais que les rendements (en silence) des résultats incohérents. J'ai lu beaucoup de réponses sur ce qui concerne des questions similaires et me demande combien de personnes réelles dans le monde réel conversions avec des dépôts qui ont une véritable "cicatrices" et les questions.cvs-fast-export
importées pas d'histoire,cvs2git
même pas d'importer un fichier (erreur sur l'exemple de fichier d'option),git-cvsimport
plutôt qu'a fait le travail avec une syntaxe très proche de Cette réponse lien ci-dessusJ'ai récemment utilisé (2016) reposurgeon de Eric Raymond pour importer un CV pensions à partir de sourceforge pour git. J'ai été très agréablement surpris et il a très bien fonctionné.
Après des expériences passées avec cvs2svn et d'autres outils, je recommande sans hésitation reposurgeon pour ce genre de tâches.
Eric a posté un simple guide de migration de ici
Afin de cloner un projet à partir de sourceforge pour github, j'ai effectué les étapes suivantes.
créer un vide git à
https://github.com/$GITUSER/$PROJECT.git
gaborous's réponse utilise
git fast-import
, qui pourrait échoue sur un message du journal pas encodés en UTF-8.Qui permettra de mieux travailler avec Git 2.23 (T2 2019): La "
git fast-export/import
" paire a appris à gérer s'engage avec des messages de log dans le codage autre que UTF-8 mieux.Voir s'engager e80001f, s'engager 57a8be2, s'engager ccbfc96, s'engager 3edfcc6, s'engager 32615ce (14 Mai 2019) par Élie Newren (
newren
).(Fusionnés par Junio C Hamano --
gitster
-- dans s'engager 66dc7b6, 13 Juin 2019)Cela signifie que le
Documentation/git-fast-export
comprend maintenant:La
Documentation/git-fast-import
comprend maintenant:À voir ce test qui utilise un auteur avec des caractères non-ascii dans le nom, mais pas de
spécial message de commit.
Il ne vérifie pas que le réencodage en UTF-8, par la vérification de la taille: