Jakie są twoje najlepsze praktyki i porady dotyczące używania git do interfejsu z repozytorium CVS?Najlepsze praktyki korzystania z git z CVS
Odpowiedz
Napisałem odpowiedź na podobne pytanie here.
Działa to zaskakująco dobrze, gdy jesteś zmuszony kontynuować wprowadzanie zmian do centralnego repozytorium CVS.
Pracowałem tylko z interakcjami Git-CVS, aby zaprezentować Gita znajomym, ale było to bardzo proste.
- Musisz zainstalować aktualną kopię
cvsps
.Git cvsimport
używa tego do uzyskania dostępu do historii CVS. Okazało się, że dla dużego projektu, inital set-up był znacznie szybciej biorąc pełną kopię repo CVS na komputerze, a robi
git cvsimport
lokalnie:$ rsync rsync://yourprojecthost.com/cvsroot/yourproject/* $ mkdir myproject.git $ cd myproject.git $ git cvsimport -p -x -v -d :local:/path/to/cvsroot/yourproject
Należy zauważyć, że -x po -p jest bardzo ważne. To przechodzi -x do cvsps. Więcej informacji można znaleźć na stronie cvsps man page.
Myślę, że jest błędny/w kroku 3. –
@PeterBurns: To jest ... Powinno być 'git cvsimport -p -x -v -d: local:/path/to/cvsroot yourproject' – Archenoth
Lekko meta-odpowiedź. Jeśli jesteś zmuszony do używania git 'guerilla style', np. Twoja firma utknęła przy użyciu cvs do kontroli wersji i używasz git na twojej stacji roboczej, aby ułatwić życie, możesz rozważyć zrobienie czegoś takiego;
CVS=realCvsPath
# commit to the git first
if ($ARGV[0] && $ARGV[0] eq "commit")
{
system 'git commit -a';
}
# execute the appropriate cvs program
# ===================================
exec "$CVS", @ARGV
Wywołanie tego pliku "cvs" i włączenie go do ścieżki przed prawdziwym poleceniem CVS. W przeciwnym razie można mieć git popełnia starsze niż te, CVS, który nie jest tak przydatny ...
pisałem up szczegóły własnego workflow for remote CVS, local Git
you" don "t zaufania" 'cvsimport' z nieokreślonych powodów (są również inne narzędzia do tego), więc promujesz wyrzucanie wszystkich poprzednich informacji o rewizji? To straszne rozwiązanie. –
Co jest takiego strasznego? Jeśli wrzucam moje zmiany z powrotem do CVS, to żadna historia zmian nie zostanie "wyrzucona". A jeśli chcę zobaczyć historię zmian, zawsze mogę użyć komend CVS, aby to zrobić. –
Jaką korzyść uzyskasz dodając 'CVS' do' .gitignore', zamiast zatwierdzić go do git? Czy to nie powoduje, że twoje repozytorium git jest niekompletne? Zobacz http://stackoverflow.com/a/37585092/1122270 i http://stackoverflow.com/q/37585385/1122270 o co mi chodzi. – cnst
Jeśli prąd jest w 100% w CVS (np OpenBSD lub wiele jego podprojektów, takich jak mdocml lub ports-readmes), a zwłaszcza jeśli jest tak zardzewiały, jak drzewo CVS OpenBSD (np. czasami nawet ma przepisywane historie), uważam za całkiem przydatne po prostu zatwierdzenie plików CVS/{Entries,Repository,Root}
bezpośrednio do mojego git
magazyn.
To sprawia, że bardzo łatwo się nie mieć wiele niezależnych obszarów roboczych, sprawiają, że możliwe do kasy z git
na dowolnym komputerze, a następnie cvs up
na miejscu, albo cvs diff
wygenerować odpowiednie łatki CVS dla mailingu do opiekunów git-mniej pod prąd.
Chciałbym pokusić się o to samo pytanie SourceSafe, ale naprawdę nie chcę jeździć na (całkowicie na cel) drwiny. –