Est-il un outil de migration de CVS vers Git?
J'ai l'intention de changer de CVS vers Git.
Dans le cas de SVN, il semble y avoir cvs2svn
. Est-il un outil similaire pour migrer facilement de CVS vers Git?
- Je ne suis pas un git expert, mais qu'en git-scm.com/docs/gitcvs-migration ?
Vous devez vous connecter pour publier un commentaire.
Le seul outil qui a différentiels importation semble être git-cvsimport. Si vous voulez convertir (migrer) du dépôt CVS, Git, la meilleure solution pour l'instant semble être mentionnées ci-dessus cvs2git mode de cvs2svn.
Voir aussi Interfaces Interfaces Et Des Outils page sur Git wiki, section sur les interactions avec d'autres systèmes de contrôle de révision.
git-cvsserver
).cvs2git
En outre fourni des réponses, voici un guide sur comment convertir des cvs à git en utilisant cvs2git outil. Ici, modulename est un nom de CVS répertoire que vous souhaitez importer.
Conditions préalables
cvs2svn
paquet (qui comprend cvs2git de commande) doit être déjà installé.Mise à jour: les étapes 1 et 2 ne sont pas entièrement correct - avant de tenter, lire le commentaire ci-dessous par mhagger, le responsable de cvs2git
caisse modulename
créer un vide CVSROOT nécessaire par cvs2git
télécharger un exemple de cvs2git.options à http://cvs2svn.tigris.org/svn/cvs2svn/trunk/cvs2git-example.options (l'utilisateur "invité" sans mot de passe)
modifier cvs2git.le fichier d'options. Remplacer r'test-données/main-cvsrepos' avec 'modulename'. Edit auteurs transforme.
exécuter cvs2git pour créer git fichiers temporaires
créer dépôt git
importer à partir de git fichiers temporaires créés par cvs2git
la caisse de la copie de travail
cvs2git
conversion à partir d'un extrait de la copie de travail d'un référentiel! Vous avez à courir contre le référentiel lui-même; c'est à dire, le répertoire déjà contient unCVSROOT
sous-répertoire et beaucoup defilename,v
fichiers. Si vous utilisez une centrale serveur CVS, le référentiel que vous avez besoin se trouve sur le serveur.filename,v
fichiers qui contiennent toutes les révisions de fichiers. Un extrait de la copie de travail ne contient qu'une seule version du projet. cvs2svn ne sais pas comment faire pour récupérer des révisions antérieures à partir du serveur. Ergo, il n'est pas possible. Vous devez avoir confondu par vous-même en cours d'exécution des différentes commandes que vous décrivez ci-dessus.cvs2git
à se convertir à Git.rsync -av rsync://PROJECT.cvs.sourceforge.net/cvsroot/PROJECT/\* cvs
cvs2git-example.options
ci-dessus, utiliser celui qui correspond à votre version (eg./usr/share/doc/cvs2svn/cvs2git-example.options
) et il devrait fonctionner correctement.cvs2svn a un cvs2git mode.
Si quelqu'un a encore le malheur de l'utilisation de CVS, vous pouvez essayer de la "merde" : https://github.com/rcls/crap
C'est rapide (comme l'accès CVS peut être rapide), prend en charge les dégâts que vous trouvez dans cv repos, et incrémental.
Une autre solution pourrait être d'utiliser git cvsimport *
Je n'ai pas essayé moi-même, mais des amis ont rapporté le succès de la conversion de la première de CVS vers SVN, puis à partir de SVN à Git. Il semble que les outils pour faire ces transitions ont été plus complètement secoués qu'un CV à Git de transition.
J'ai essayé cvs2git, git-cvsimport et parsecvs.
cvs2git parfois (comme je me souviens bien) crée des fausses branches de balises.
git-cvsimport ne prend pas en charge plusieurs balises pour un ensemble de modifications. Cependant, il est possible de saisir quelques modifications supplémentaires pour cvsps de soutenir et de les modifier à l'origine git-cvsimport à quelque chose qui utilise la mise à jour cvsps (je l'ai essayé et il semble fonctionner). Sur l'avantage côté il prend en charge les mises à jour incrémentielles et a une certaine logique à récupérer correctement fusionne (mais il NÉCESSITE un format approprié pour le message de commit).
parsecvs jusqu'à présent m'a donné les meilleurs résultats. Malheureusement, le code disponible sur le web ne compile pas correctement avec les dernières git. Le changement alors que pas trivial, c'est faisable.
EDIT: Ça ressemble ESR a pris cvsps et parsecvs il y a donc de l'espoir pour CV->GIT de la migration. MAIS il a déjà mentionné sur certains liste de diffusion à laquelle il peut déclarer certains des outils qu'il a repris récemment officiellement mort.
Vous pouvez ajouter fromcvs à la liste. Il convertit bien et est très rapide et aussi incrémentielle. Il ne fait pas collante balises, seules les branches, cependant.
Vous pouvez utiliser
git cvsimport
. Il nécessitecvsps
à être installé, mais vous avez besoin d'installer 2.x, 3.x est ne sont pas incompatibles plus.Puis importer référentiel CVS sur vide git. Exemple d'utilisation:
Sur OSX installer
cvsps-2.1
de la façon suivante (après avoirbrew
):Vous pouvez également utiliser
cvs2git
outil qui peut convertir un CVS, git. Cependant, vous devez avoir accès à un répertoire CVSROOT.Vérifier cvs2git documentation les étapes de l'installation.
Exemple d'utilisation:
Cela permettrait de créer deux fichiers de sortie dans git fast-format d'importation. Les noms de ces fichiers sont spécifiés par votre fichier d'options ou d'arguments de ligne de commande. Dans l'exemple, ces fichiers sont nommés
cvs2git-tmp/git-blob.dat
etcvs2git-tmp/git-dump.dat
.Ces fichiers peuvent être importés dans empty git repository par:
Puis supprimer le
TAG.FIXUP
la branche et de l'exécutergitk --all
pour afficher les résultats de la conversion.Vérifier plus plus, en cours d'exécution:
cvs2git --help
.J'ai lu la réponse par Vanuan et mhagger de commentaires. Malheureusement mhagger ne poste pas comment le faire avec
cvs2git
. C'est très bien écrit jusqu'ici: http://www.mcs.anl.gov/~jacob/cvs2svn/cvs2git.htmlJ'ai utilisé
cvs2git
au lieu degit-cvsimport
parce que la documentation degit-cvsimport
suggère de l'utiliser au lieu d'éviter les problèmes degit-cvsimport
: https://www.kernel.org/pub/software/scm/git/docs/git-cvsimport.html#issuesIl suit essence de ce qui a fonctionné pour moi de créer un dépôt git à partir d'un référentiel CVS de sourceforge sur Debian Sid:
La
rsync
étape est nécessaire parce quecvs2git
besoin d'un accès à l'ensemble de l'histoire. Une simple caisse n'est pas assez.J'ai trouvé cvs-fast-export fait un excellent travail. J'ai dû télécharger et compiler moi-même, mais n'ont pas tous les problèmes importants de le faire.