it-swarm.com.de

Konvertieren eines lokalen SVN-Repo-Dumps in Git

Ich habe nach verwandten Fragen gesucht, aber nichts gefunden, das zu meiner spezifischen Situation passt: Ich habe einige alte Repository-Archive von einem SVN-Server, der vor Jahren heruntergefahren wurde. Sie sind Tarballs der ursprünglichen Repository-Struktur auf dem Server. Was ich tun möchte, ist, sie in Git-Repositories umzuwandeln, als Grundlage für die zukünftige Arbeit/Wiederbelebung der Projekte. Ich habe bereits mehrere Tutorials über den Konvertierungsprozess gelesen und denke, ich kann die Konvertierung des Autors, die Zuordnung der Zweige usw. herausfinden, aber alle gehen davon aus, dass Sie einen SVN-Server und eine URL für das Repository haben. Muss ich einen SVN-Server installieren und einrichten, um diese Konvertierung durchzuführen, oder kann ich auf irgendeine Weise entweder git clone oder svn2git (oder ein anderes Tool) auf den Repo-Dump verweisen, den ich habe?

20
R..

installiere Subversion lokal, um deinen Dump zu importieren, dann mit dem Paket git-svn.

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

27
Asenar

Liste aller Subversion-Committer abrufen :

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

Klonen Sie das Subversion-Repository mit git-svn :

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

Konvertiere svn: Ignoriere Eigenschaften in .gitignore :

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

Repository in ein Bare-Git-Repository verschieben :

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

Verschieben Sie dann das temporäre Repository in das neue leere Repository.

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

Zweig "Trunk" in "Master" umbenennen :

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

Bereinige Zweige 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

4
Amir Saniyan
  1. Alle (?) Svn -> Git-Konverter benötigen ein Subversion-Repository,
  2. Die Baumkopie des Repositorys ist kein Dump, sondern eine übliche Sicherung auf Dateiebene.

Du hast:

  1. Installieren und konfigurieren Sie einen Subversion-Server (falls Ihr Konverter das file:///-Protokoll für SVN nicht verarbeiten kann, wird es sonst nicht benötigt - entpacken Sie einfach die Tarballs und überprüfen Sie das Repo mit dem svn-Client)
  2. Lesen Sie mehr über git-svn
  3. Verwenden Sie Git-Svn
2
Lazy Badger
  1. Nehmen Sie die Dump-Datei in Ihre Server:

    svnadmin dump "repopath or url" > import.bkp
    
    git svn clone "back" 
    
  2. Gehe zum Klonpfad und öffne git bash und führe die folgenden Befehle aus:

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