Domanda

Ho un progetto di 20 anni che vorrei migrare da RCS a Git, senza perdere la cronologia. Tutte le pagine web suggeriscono che One True Path è attraverso CVS. Ma dopo un'ora di googling e di provare diversi script, devo ancora trovare qualcosa che con successo converta il mio albero del progetto RCS in CVS. Spero che le brave persone di Stackoverflow sapranno cosa funziona davvero, al contrario di ciò che si dice funzioni e non lo fa.

(Ho cercato StackOverflow utilizzando sia la ricerca SO nativa sia una ricerca Google, ma se c'è una risposta utile nel database, l'ho persa.)

AGGIORNAMENTO : lo strumento rcs-fast-export in http://git.oblomov.eu/rcs-fast-export è stato riparato il 14 aprile 2009 e questa versione sembra funzionare per me. Questo strumento converte straight in git senza CVS intermedio. Grazie Giuseppe e Jakub !!!


Cose che non hanno funzionato che ricordo ancora:

  • Lo script da rcs-to-cvs fornito nella directory contrib delle fonti CVS

  • Lo strumento rcs-fast-export su http: //git.oblomov.eu/rcs-fast-export nelle versioni precedenti al 13 aprile 2010

  • Lo script rcs2cvs trovato in un documento chiamato " CVS-RCS- HOW-TO Document per Linux "

È stato utile?

Soluzione

Vedi InterfacesFrontendsAndTools su Git Wiki, in " Tools " ;, " Interazione con altri Sistemi di controllo di revisione "," Altro ". Lì troverai una descrizione e un link a rcs-fast-export ( gitweb ) sceneggiatura di Ruby di Giuseppe " Oblomov " Bilotta.

(la ricerca sul Web troverebbe anche la pagina di Ohloh e l'annuncio per il progetto citato) .

Altri suggerimenti

Come regola generale, dovresti fare attenzione a quali script esegui. Per RCS - > GIT potrebbe essere nel tuo interesse seguire la metodologia RCS- > CVS- > GIT.

Ho dato una rapida occhiata a rcs-fast-export.rb a partire dal 12-01-2011 e mi sono imbattuto in questa parte del codice. Questo è spaventoso nella migliore delle ipotesi.

# 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, dopo un po 'di armeggiamento, ho scoperto che era banale convertire RCS in CVS. I file sono nello stesso formato, quindi è semplicemente una questione di spostare i file in una radice CVS esistente. Ciò presuppone che tu abbia accesso ai file 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_

Ho appena trovato questo, che ha funzionato bene per me:

http://cynic.cc/blog/posts/migrate -da-RCS-to-git /

Nota che " cvs-source-dir " su quella pagina deve essere un percorso assoluto.

Ho avuto anche questo problema e ho lottato con cvs2svn, parsecvs e quant'altro. parsecvs ha ottenuto il più vicino, ma sembra che Keith l'abbia lasciato indietro e ora stanno spuntando forchette casuali . Il problema che ho riscontrato è che avrebbe analizzato bene i file RCS ma l'ultima cosa che ha fatto è stato git rm il file, quindi avrei dovuto andare in giro con git reset per annullare la cancellazione.

Poi ho scoperto convert di mercurial:    https://www.mercurial-scm.org/wiki/ConvertExtension Problema risolto!

Ho provato ad aggiungere in modo incrementale alcune cose da alberi RCS separati, sembra che abbia funzionato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top