2013-04-14 17 views
19

Szukałem pokrewnych pytań, ale nie mogłem znaleźć niczego pasującego do mojej konkretnej sytuacji: Mam kilka starych archiwów repozytorium z serwera SVN, który został usunięty wiele lat temu. Są to paczki z oryginalną strukturą repozytorium na serwerze. Chciałbym przekonwertować je do repozytoriów git jako podstawę przyszłej pracy/ożywienia projektów. Przeczytałem już kilka tutoriali na temat procesu konwersji i myślę, że mogę wymyślić konwersję autorów, mapowanie gałęzi itp., Ale wszyscy zakładają, że masz serwer SVN i adres URL dla repozytorium. Czy muszę zainstalować i skonfigurować serwer SVN, aby wykonać tę konwersję, czy jest jakiś sposób, aby wskazać na git clone (lub inne narzędzie) na repo Dump mam?Konwertowanie lokalnego pliku repo svn do git

+1

edycja Standard VisualSVN Server jest darmowy, więc jest plan B. – Dialecticus

+0

Myślę, że instalacja oryginalnego serwera SVN byłaby znacznie łatwiejsza niż ta .. –

Odpowiedz

21

zainstalować Subversion lokalnie, aby importować dum p, a następnie z pakietem git-svn.

Można użyć git svn clone file:///path/to/svn/repo /path/to/empty/dir

+1

Już znalazłem to eksperymentowanie zeszłej nocy i działało, b ut to jest poprawna odpowiedź. Dzięki i + 1/zaakceptowany! Witamy w SO. :-) –

+0

dziękuję bardzo! – Asenar

2
  1. Wszystko svn (?) -> Przetworniki git wymagają żywo repozytorium Subversion,
  2. Drzewo kopii repozytorium nie jest nora, to zwykle kopii zapasowej na poziomie plików.

Masz:

  1. Instalowanie i konfigurowanie dowolnego serwera Subversion (jeśli przetwornica nie może obsługiwać protokół file:/// dla SVN, w przeciwnym razie nie jest to konieczne - wystarczy rozpakować archiwum (s) i sprawdzić repo z SVN klient)
  2. Przeczytaj o git-svn
  3. Zastosowanie git-svn
4

Pobierz listę wszystkich committers Subversion:

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt

sklonować repozytorium Subversion przy użyciu git-svn:

git svn clone [SVN repo URL] --no-metadata -A authors-transform.txt --stdlayout ~/temp

Konwersja svn: ignore właściwości .gitignore:

cd ~/temp 
git svn show-ignore > .gitignore 
git add .gitignore 
git commit -m 'Convert svn:ignore properties to .gitignore.' 

push repozytorium gołego repozytorium git:

git init --bare ~/new-bare.git 
cd ~/new-bare.git 
git symbolic-ref HEAD refs/heads/trunk 

Następnie wciśnij repozytorium temp do nowej gołej repozytorium.

cd ~/temp 
git remote add bare ~/new-bare.git 
git config remote.bare.push 'refs/remotes/*:refs/heads/*' 
git push bare 

Zmień nazwę „pnia” branch „master”:

cd ~/new-bare.git 
git branch -m trunk master 

oczyścić gałęzie i tagi:

cd ~/new-bare.git 
git for-each-ref --format='%(refname)' refs/heads/tags | 
cut -d/-f 4 | 
while read ref 
do 
    git tag "$ref" "refs/heads/tags/$ref"; 
    git branch -D "tags/$ref"; 
done 

referencyjny: http://john.albin.net/git/convert-subversion-to-git

0
  1. Take plik zrzutu w swoim zrywa:

    svnadmin dump "repopath or url" > import.bkp 
    
    git svn clone "back" 
    
  2. Przejdź do ścieżki klonu a następnie otwarty git bash i uruchomić te polecenia:

    git svn show-ignore > .gitignore 
    
    git add .gitignore 
    
    git commit -m "with message" 
    
    git check in "git url" 
    
Powiązane problemy