Migracja projektu z RCS do git?

Mam 20-letni projekt , który chciałbym przenieść z RCS do git, bez utraty historii. Wszystkie strony internetowe sugerują, że jedyną prawdziwą ścieżką jest CVS. Ale po godzinie googlowania i próbowania różnych skryptów, nie znalazłem jeszcze niczego, co z powodzeniem konwertuje moje drzewo projektów RCS do CVS. Mam nadzieję, że dobrzy ludzie w Stackoverflow będą wiedzieli, co faktycznie działa, w przeciwieństwie do tego, co twierdzi się, że działa, a nie działa.]}

(Szukałem Stackoverflow za pomocą zarówno natywnego SO search i Google search, ale jeśli jest pomocna odpowiedź w bazie danych, przegapiłem ją.)

UPDATE : the rcs-fast-export tool at http://git.oblomov.eu/rcs-fast-export został naprawiony 14 kwietnia 2009, a ta wersja wydaje się działać dla mnie. To narzędzie konwertuje straight do git bez pośredniego CVS. Dzięki Giuseppe i Jakub!!!


Rzeczy, które nie działały, które wciąż pamiętam:

  • Na rcs-to-cvs skrypt, który wyświetla się w contrib katalogu źródeł CVS

  • Narzędzie rcs-fast-export W http://git.oblomov.eu/rcs-fast-export w wersjach przed 13 kwietnia 2010

  • Skrypt rcs2cvs znaleziony w dokumencie o nazwie "CVs-RCS-HOW-to Document for Linux"

Author: Kai, 2009-10-25

5 answers

Zobacz InterfacesFrontendsAndTools strona na Git Wiki, w "Tools", "Interaction with other Revision Control Systems", "Other". Tam znajdziesz opis i link do rcs-fast-export (gitweb ) skrypt Ruby autorstwa Giuseppe "Oblomov" Bilotta.

(w wyszukiwarce internetowej znajdzie się również strona Ohloh i ogłoszenie dla wspomnianego projektu) .

 21
Author: Jakub Narębski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-25 11:32:47

Ogólnie należy uważać na to, jakie Skrypty uruchamiasz. W przypadku RCS -> GIT w Twoim najlepszym interesie może być przestrzeganie metodologii RCS->CVS->GIT.

Rzuciłem okiem na rcs-fast-export.rb od 2011-01-12 To w najlepszym razie przerażające.

# 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|
...
 1
Author: md0,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-06 22:34:32

OK, po odrobinie majsterkowania okazało się, że konwersja RCS na CVS jest trywialna. Pliki są w tym samym formacie, więc jest to po prostu kwestia przeniesienia plików do istniejącego katalogu głównego CVS. Zakłada to, że masz dostęp do plików 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_
 1
Author: Edward Falk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-19 22:22:21

Właśnie znalazłem to, co mi dobrze działało:

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

Zauważ, że "CVs-source-dir" na tej stronie musi być ścieżką bezwzględną.

 0
Author: Jonas Berlin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-16 14:01:43

Też miałem ten problem i zmagałem się z cvs2svn, parsecvs i tym podobne. Parsecvs było najbliżej, ale Keith go zostawił, a teraz pojawiają się przypadkowe widelce. Problem, który napotkałem, polegał na tym, że pliki RCS były dobrze analizowane, ale ostatnią rzeczą, jaką zrobił, był git rm plik, więc musiałbym się obijać git reset, aby cofnąć usunięcie.

Potem odkryłem mercurial convert: https://www.mercurial-scm.org/wiki/ConvertExtension Problem rozwiązany!

Próbowałem stopniowo dodać kilka rzeczy z oddzielnych drzew RCS, wydaje się, że zadziałało.

 0
Author: user317023,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-16 14:31:01