Comment migrer un dépôt CVS vers GIT ?
Pour migrer le repository CVS en GIT, on a utilisé l’outil cvs-fast-export [1] comme conseillé ici [2].
Installation de cvs-fast-export
# Comme utilisateur: git clone https://gitlab.com/esr/cvs-fast-export.git ./buildprep -n # Doing manual installation sudo apt-get install -qy make grep sed gcc bison flex python3 git rcs cvs pylint cppcheck shellcheck make sudo make install
La documentation ne peut pas être générée (a2x manquant).
Migration de cvs à git
Le principe est le suivant:
1. se placer dans le dossier du dépôt CVS, soit à la racine de celui-ci ou alors dans le sous-dossiers à partir duquel on souhaite faire la migration.
Exemple:
cd ~/projects/cvs/private
2. rechercher tous les fichiers *,v et les envoyer à cvs-fast-export et rediriger la sortie standard vers un fichier .fe. Ceci reprendra toutes les modifications. Ceci reprendra tous les commits de tous les fichiers et produira un fichier .fe importable dans git.
Exemple:
find . -name '*,v' | cvs-fast-export > ../converted-private.fe
3. initialiser ensuite le repository git et entrer dans le dossier.
Exemple:
git init private
cd private
4. finalement importer les données depuis le fichier converted-private.fe et effectuer un checkout.
Exemple:
git fast-import < ../converted-private.fe
git checkout -f
TODO
Les fichiers sont datés au moment du checkout. On pourrait imaginer écrire un script qui récupère le timestamp du dernier commit de chaque fichier et change la date. L’historique des commits étant importée, cela ne semble pas indispensable.
Références:
[1] https://gitlab.com/esr/cvs-fast-export
[2] https://docs.gitlab.com/ee/user/project/import/cvs.html