2013-04-14 17 views
19

Ich suchte verwandte Fragen, aber ich konnte nichts finden, das meiner spezifischen Situation entspricht: Ich habe einige alte Archiv-Archive von einem SVN-Server, der vor Jahren genommen wurde. Sie sind Tarballs der ursprünglichen Repository-Struktur auf dem Server. Ich möchte sie in git-Repositories als Grundlage für zukünftige Arbeiten konvertieren/die Projekte wiederbeleben. Ich habe bereits mehrere Tutorials über den Konvertierungsprozess gelesen und denke, dass ich die Autorenkonvertierung, das Branch Mapping usw. herausfinden kann, aber alle gehen davon aus, dass Sie einen SVN-Server und eine URL für das Repository haben. Muss ich den SVN-Server installieren und einrichten, um diese Konvertierung durchzuführen, oder gibt es eine Möglichkeit, auf den Repo-Dump, den ich habe, git clone oder svn2git (oder ein anderes Tool) zu zeigen?Umwandlung eines lokalen SVN Repo-Dump in Git

+1

Standard Edition von VisualSVN Server ist frei, so gibt es Plan B. – Dialecticus

+0

Ich denke, die Installation des ursprünglichen SVN-Servers wäre ein gutes Stück einfacher als das .. –

Antwort

21

Subversion vor Ort, um Ihre dum zu importieren installieren p, dann mit git-svn-Paket.

können Sie verwenden git svn clone file:///path/to/svn/repo /path/to/empty/dir

+1

Ich fand bereits dieses Experiment letzte Nacht und habe es funktioniert, b Aber das ist die richtige Antwort. Danke und + 1/akzeptiert! Und willkommen in SO. :-) –

+0

danke dir sehr! – Asenar

2
  1. Alle SVN (?) -> git-Wandler erfordern Live-Subversion-Repository,
  2. Baum-Kopie-Repository kein Dump ist es üblich Sicherung auf Dateiebene ist.

Sie haben:

  1. installieren und alle Subversion-Server konfigurieren (wenn Ihr Konverter nicht file:/// Protokoll für SVN verarbeiten kann, sonst ist es nicht erforderlich - einfach Tarball entpacken (n) und überprüfen Repo mit svn Client)
  2. Lesen Sie mehr über git-svn
  3. git-svn
4

Abrufen einer Liste aller Subversion-Committer:

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

Clone das Subversion-Repository mit git-svn:

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

Convert svn: Eigenschaften ignoriert .gitignore:

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

Push-Repository zu einem bloßen Git Repository:

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

Dann drücken Sie das Temp-Repository in die neuen Bare-Repository.

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

Rename „Stamm“ Zweig „Master“:

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

Abgleich Branches und Tags:

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 

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

0
  1. Nehmen Sie die Dump-Datei in Ihrem severs:

    svnadmin dump "repopath or url" > import.bkp 
    
    git svn clone "back" 
    
  2. Zum Klon Pfad und öffnen Sie dann git bash und Sie folgende Befehle ein:

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