Question

J'ai un projet vieux de 20 ans que je voudrais migrer de RCS à git, sans perdre l'histoire. Toutes les pages Web suggèrent que le One True Path passe par CVS. Mais après une heure passée à googler et à essayer différents scripts, je n’ai encore rien trouvé qui permette à de convertir mon arbre de projet RCS en CVS. J'espère que les bonnes personnes chez Stackoverflow sauront ce qui fonctionne réellement, par opposition à ce qui est censé fonctionner et qui ne fonctionne pas.

(J'ai effectué une recherche dans Stackoverflow en utilisant à la fois la recherche native SO et une recherche Google, mais s'il y a une réponse utile dans la base de données, je l'ai manquée.)

UPDATE : l'outil rcs-fast-export situé à http://git.oblomov.eu/rcs-fast-export a été réparé le 14 avril 2009 et cette version semble fonctionner pour moi. Cet outil convertit straight en git sans CVS intermédiaire. Merci Giuseppe et Jakub !!!

Ce qui ne fonctionne pas et dont je me souviens encore:

  • Le script rcs-to-cvs fourni dans le répertoire contrib des sources CVS

  • L'outil rcs-fast-export situé à http: //git.oblomov.eu/rcs-fast-export dans les versions antérieures au 13 avril 2010

  • Le script rcs2cvs figurant dans un document appelé "Document CVS-RCS-HOW-TO pour Linux"

Était-ce utile?

La solution

Voir la page InterfacesFrontendsAndTools sur Git Wiki, dans " Outils " ;, " Interaction avec d'autres Systèmes de contrôle de révision "," Autres ". Vous y trouverez une description et un lien vers rcs-fast-export ( gitweb ) Script Ruby de Giuseppe " Oblomov " Bilotta.

(la recherche Web trouverait également une page Ohloh et une annonce pour le projet mentionné) .

Autres conseils

En règle générale, vous devez faire attention aux scripts que vous exécutez. Pour RCS - > GIT, il est peut-être dans votre intérêt de suivre la méthodologie RCS- > CVS- & Gt; GIT.

Jetez un coup d'œil à rcs-fast-export.rb à partir du 12/01/2011 et parcourez cette partie du code. C’est au mieux effrayant.

# steal username/email data from other init files that may contain the
# information
def steal_username
    [
            # the user's .hgrc file for a username field
            ['~/.hgrc',   /^\s*username\s*=\s*(["'])?(.*)\1$/,       2],
            # the user's .(g)vimrc for a changelog_username setting
            ['~/.vimrc',  /changelog_username\s*=\s*(["'])?(.*)\1$/, 2],
            ['~/.gvimrc', /changelog_username\s*=\s*(["'])?(.*)\1$/, 2],
            []
    ].each do |fn, rx, idx|
...

OK, après un peu de bricolage, j’ai trouvé qu’il était trivial de convertir RCS en CVS. Les fichiers sont dans le même format, il suffit donc de les déplacer vers une racine CVS existante. Cela suppose que vous ayez accès aux fichiers RCS.

# Create CVS root dir. You only need to do this once.
mkdir $HOME/cvs/
cd $HOME/cvs/
cvs init

# Import a repository from RCS to CVS
cp -a _projectname_/RCS $HOME/cvs/_projectname_

Je viens de trouver ce qui a bien fonctionné pour moi:

http://cynic.cc/blog/posts/migrate -from-rcs-to-git /

Il suffit de noter que "cvs-source-dir" sur cette page doit être un chemin absolu.

J'ai eu ce problème aussi et ai lutté avec cvs2svn, parsecvs et tout le reste. parsecvs a été le plus proche, mais Keith semble l'avoir laissé derrière lui et maintenant des fourchettes aléatoires apparaissent . Le problème que j’ai rencontré était qu’il analyserait parfaitement les fichiers RCS, mais la dernière chose qu’il a faite a été de git rm le fichier. Il aurait donc fallu que je me moque de git reset pour annuler la suppression.

Ensuite, j'ai découvert le convert de mercurial:    https://www.mercurial-scm.org/wiki/ConvertExtension Problème résolu!

J'ai essayé d'ajouter progressivement des éléments de différentes arborescences RCS, cela semble avoir fonctionné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top