Voraussetzungen
Für diese Schritte musst du ein macOS- oder Linux-System verwenden und die folgenden Tools installiert haben:
- Subversion
- Git, einschließlich
git-svn
- Git Large File Storage (Git LFS) (siehe Git Large File Storage installieren)
Importieren eines Subversion-Repositorys
-
Erstellen Sie ein neues Repository auf GitHub. Initialisiere das neue Repository nicht mit README-, Lizenz- oder gitignore-Dateien, um Fehler zu vermeiden. Sie können diese Dateien hinzufügen, nachdem Ihr Projekt per Push an GitHub Enterprise Server übergeben wurde. Weitere Informationen finden Sie unter Ein neues Repository erstellen.
-
Führe
git --version.
aus, um zu bestätigen, dass Git auf deinem Computer installiert ist.Die Ausgabe sollte in etwa wie folgt aussehen:
git version 2.40.0
. -
Führe
git svn --version
aus, um zu bestätigen, dassgit svn
auf deinem Computer verfügbar ist.Die Ausgabe sollte in etwa wie folgt aussehen:
git-svn version 2.40.0 (svn 1.14.2)
.Wenn du
git
erfolgreich ausführen kannst, aber bei der Ausführung vongit svn
ein Fehler auftritt, musst dugit svn
möglicherweise separat installieren. Du solltest Homebrew oder die Ubuntu-Paketregistrierung verwenden, diegit-svn
-Pakete enthalten. -
Führe
git lfs --version
aus, um zu bestätigen, dass Git LFS auf deinem Computer installiert ist.Die Ausgabe sollte in etwa wie folgt aussehen:
git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1)
. -
Checke dein Subversion-Repository aus.
Führe beispielsweise
svn checkout https://svn.code.sf.net/p/circuit/code/trunk
aus, um das Open-Source-Projekt Logisim aus Sourceforge auszuchecken. -
Wechsele in das Verzeichnis für dein Subversion-Repository.
-
Führe das folgende Skript aus, um eine Liste der Autor*innen in deinem Subversion-Projekt abzurufen und die Liste in
authors.txt
zu speichern:Shell svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
-
Aktualisiere deine
authors.txt
-Datei, und ordne den im Subversion-Repository verwendeten Autorennamen dem Namen zu, den du in deinem Git-Repository verwenden möchtest; verwende das folgende Format:octocat = The Octocat <octocat@github.com>
-
Verwende
git svn
, um dein Subversion-Repository in ein Git-Repository zu konvertieren.-
Wenn dein Subversion-Repository ein Standardformat mit den Ordnern „trunk“, „branches“ und „tags“ hat, führe
git svn clone -s URL PATH/TO/DESTINATION --authors-file PATH/TO/AUTHORS.TXT
aus, ersetzeURL
durch die URL des Subversion-Repositorys,PATH/TO/DESTINATION
durch den Pfad zum Verzeichnis, in das du das Repository klonen möchtest, undPATH/TO/AUTHORS.TXT
durch den Pfad zu deinerauthors.txt
-Datei.Führe beispielsweise
git svn clone -s https://svn.code.sf.net/p/circuit/code logisim --authors-file path/to/authors.txt
aus, um das Logisim-Projekt aus Sourceforge in ein Verzeichnis namens „logisim“ zu klonen. -
Wenn dein Subversion-Repository kein Standardrepository ist, kannst du
git svn
für die Arbeit mit dem Repository anpassen. Weitere Informationen findest du unter git-svn in der Git-Dokumentation.
-
-
Git checkt jede SVN-Revision aus und wandelt die Revision in einen Git-Commit um. Wenn dein Repository viele Dateien oder einen großen Verlauf hat, dauert dieser Prozess lange.
Bei großen Repositorys kann der Befehl einfrieren. In diesem Fall kannst du beginnen, wo du aufgehört hast, indem du den Befehl mit STRG+C beendest, zu deinem neuen Verzeichnis wechselst und dann
git svn fetch
ausführst. -
Wechsle in das Verzeichnis für das neu erstellte Git-Repository.
-
Führe
git remote add origin URL
aus, und ersetze dabeiURL
durch die URL für das zuvor erstellte GitHub-Repository (z. B.https://github.com/octocat/example-repository.git
), um das GitHub-Repository als Remoterepository hinzuzufügen. -
Führe
git push --mirror origin
aus, um das Repository per Push an GitHub zu übertragen.Enthält das Repository Dateien, die größer als die maximale Dateigröße in GitHub Enterprise Server sind, führt der Pushvorgang möglicherweise zu einem Fehler. Führe
git lfs import
aus, um die großen Dateien in Git LFS zu verschieben, und versuch es dann erneut.