Existe-t-il un outil de migration de CVS vers Git?
11 réponses
Le seul outil qui a incrémentale importer semble être git-cvsimport . Si vous souhaitez convertir ( migrer ) de CVS en git, la meilleure solution pour l'instant semble être mentionné ci-dessus cvs2git mode de cvs2svn .
Voir aussi Interfaces Frontends And Tools page sur Git wiki, section sur l'interaction avec d'autres systèmes de contrôle de révision.
cvs2git
en plus des réponses fournies, voici un guide sur la façon de convertir cvs en git à l'aide de l'outil cvs2git. Ici, modulename est un nom du répertoire CVS que vous souhaitez importer.
prérequis
Le paquet cvs2svn
(qui inclut la commande cvs2git) doit déjà être installé.
mise à jour: les étapes 1 et 2 ne sont pas entièrement correctes - avant de tenter, lisez le commentaire ci-dessous de mhagger, le responsable de cvs2git
-
checkout modulename
cvs -d URL co -P modulename
-
create an empty CVSROOT neededed by cvs2git
mkdir modulename/CVSROOT
-
téléchargez un exemple de cvs2git.options à http://cvs2svn.tigris.org/svn/cvs2svn/trunk/cvs2git-example.options (utilisateur "invité" avec pas de mot de passe)
-
modifier cvs2git.le fichier d'options. Remplacer r'test-données/main-cvsrepos' avec 'modulename'. Modifier les auteurs transforme.
# edit this run_options.set_project( r'modulename', # and this author_transforms={ 'jrandom' : ('J. Random', 'jrandom@example.com'), 'mhagger' : 'Michael Haggerty <mhagger@alum.mit.edu>',
-
exécuter cvs2git pour créer des fichiers git temp
cvs2git --options=cvs2git.options --fallback-encoding utf-8
-
créer un dépôt git
mkdir gitrepo && cd gitrepo && git init .
-
importation à partir de fichiers git temp créés par cvs2git
cat ../cvs2git-tmp/git-{blob,dump}.dat | git fast-import
-
checkout "copie de travail 1519110920"
git reset --hard
si quelqu'un a encore la malchance d'utiliser CVS, vous pouvez essayer "crap": https://github.com/rcls/crap Il est rapide (dans la mesure où l'accès à CVS peut être rapide), prend en charge les mess que vous trouvez dans les CVs repos, et incrémental.
une alternative pourrait être d'utiliser git cvsimport *
Je n'ai pas essayé moi-même, mais des amis ont rapporté de bons succès en convertissant d'abord de CVS en SVN, puis de SVN en Git. Il semble que les outils pour effectuer ces transitions respectives ont été plus profondément secoués qu'une transition directe CVS-Git.
j'ai essayé cvs2git, git-cvsimport et parsecvs.
cvs2git crée parfois (pour autant que je me souvienne) de fausses branches pour tags.
git-cvsimport ne supporte pas les étiquettes multiples pour un ensemble de modifications. Il est cependant possible d'apporter quelques modifications supplémentaires pour cvsps afin de le prendre en charge et de changer le git-cvsimport original en quelque chose qui utilise cvsps mis à jour (je l'ai essayé et cela semble fonctionner). Du côté de l'avantage, il prend en charge les mises à jour progressives et a une certaine logique pour importer correctement les fusions (mais elle nécessite un format approprié pour le message de propagation).
parsecvs jusqu'à présent m'a donné les meilleurs résultats. Malheureusement, le code disponible sur le web ne se compile pas correctement avec le dernier git. Le changement bien que non trivial est faisable.
EDIT: Ça ressemble à du ESR a pris cvsps et parsecvs il y a donc de l'espoir pour CVS - > migration GIT. Mais il a déjà mentionné sur une liste de diffusion qu'il pourrait déclarer certains des outils qu'il a repris récemment officiellement morts.
vous pouvez utiliser git cvsimport
. Il nécessite cvsps
pour être installé, mais vous devez installer 2.x, 3.x est Non incompatible plus.
importe ensuite CVS repository sur Git vide. Exemple d'utilisation:
git cvsimport -C RepoName -r cvs -o master -k -v -d:pserver:anonymous@reponame.cvs.sourceforge.net:/cvsroot/path ModuleName
sur OSX vous installez cvsps-2.1
de la manière suivante (avec brew
):
brew tap homebrew/versions
brew install cvsps2
brew link cvsps2
vous pouvez aussi utilisez cvs2git
outil qui peut convertir un dépôt CVS en git. Cependant, vous devez avoir accès à un répertoire CVSROOT.
Vérifier cvs2git documentation les étapes de l'installation.
exemple d'usage:
cvs2git --blobfile=git-blob.dat --dumpfile=git-dump.dat --username=cvs2git /path/to/cvs/repo
cela créerait deux fichiers de sortie au format git fast-import. 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
et cvs2git-tmp/git-dump.dat
.
ces fichiers peuvent être importés dans un dépôt git vide par:
cat git-blob.dat git-dump.dat | git fast-import
puis supprimer la branche TAG.FIXUP
et exécuter gitk --all
pour afficher les résultats de la conversion.
Vérifiez pour plus, en exécutant: cvs2git --help
.
j'ai lu la réponse par Vanuan et mhagger commentaires. Malheureusement, mhagger n'a pas posté comment le faire avec cvs2git
. Tout est très bien écrit ici: http://www.mcs.anl.gov/~jacob/cvs2svn/cvs2git.html
j'ai utilisé cvs2git
au lieu de git-cvsimport
parce que la documentation de git-cvsimport
suggère de l'utiliser plutôt pour éviter les problèmes de git-cvsimport
: https://www.kernel.org/pub/software/scm/git/docs/git-cvsimport.html#issues
il suit l'essence de celui qui a fonctionné pour moi pour créer un dépôt git à partir d'un dépôt CVS sourceforge sur Debian Sid:
$ apt-get install cvs2svn cvs
$ mkdir project.cvs
$ rsync -av rsync://${PROJECT}.cvs.sourceforge.net/cvsroot/${PROJECT}/ project.cvs
$ cvs2git --blobfile=git-blob.dat --dumpfile=git-dump.dat --username=cvs2git project.cvs
$ mkdir project.git
$ cd project.git
$ git init
$ cat ../git-blob.dat ../git-dump.dat | git fast-import
l'étape rsync
est nécessaire parce que cvs2git
a besoin d'accéder à toute l'histoire. Une simple caisse ne suffit pas.
j'ai trouvé cvs-fast-export a fait un excellent travail. J'ai dû le télécharger et le compiler moi-même, mais je n'ai eu aucun problème significatif à le faire.