Skip to main content

Importieren eines Subversion-Repositorys

Du kannst ein Repository aus Subversion importieren, indem du das Repository in Git konvertierst und dann das Git-Repository an GitHub Enterprise Server pushst.

Voraussetzungen

Für diese Schritte musst du ein macOS- oder Linux-System verwenden und die folgenden Tools installiert haben:

Importieren eines Subversion-Repositorys

  1. 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.

  2. 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.

  3. Führe git svn --version aus, um zu bestätigen, dass git 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 von git svnein Fehler auftritt, musst du git svn möglicherweise separat installieren. Du solltest Homebrew oder die Ubuntu-Paketregistrierung verwenden, die git-svn-Pakete enthalten.

  4. 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).

  5. 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.

  6. Wechsele in das Verzeichnis für dein Subversion-Repository.

  7. 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
    
  8. 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>
    
  9. 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, ersetze URL durch die URL des Subversion-Repositorys, PATH/TO/DESTINATION durch den Pfad zum Verzeichnis, in das du das Repository klonen möchtest, und PATH/TO/AUTHORS.TXT durch den Pfad zu deiner authors.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.

  10. 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.

  11. Wechsle in das Verzeichnis für das neu erstellte Git-Repository.

  12. Führe git remote add origin URL aus, und ersetze dabei URL 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.

  13. 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.