Skip to main content

Unterstützung für Subversion-Clients

Der Zugriff auf GitHub-Repositorys kann von Git- und Subversion-Clients (SVN)erfolgen. In diesem Artikel erhältst du Informationen über die Ausführung eines Subversion-Clients auf GitHub sowie zu einigen häufigen Problemen, die auftreten können.

GitHub unterstützt Subversion-Clients über das HTTPS-Protokoll. Zur Übertragung von SVN-Befehlen an GitHub wird eine Subversion-Bridge verwendet.

Hinweis: Die Subversion-Unterstützung wird mit GitHub Version 3.13 entfernt. Weitere Informationen finden Sie im GitHub-Blog.

Auf GitHub unterstützte Subversion-Funktionen

Auschecken

Dein erster Schritt in Verbindung mit Subversion ist der Checkout. Da das Arbeitsverzeichnis (wo du Dateien bearbeitest) in Git-Klonen getrennt von den Repository-Daten geführt wird, enthält das Arbeitsverzeichnis jeweils nur einen Branch.

Subversion-Check-Outs sind anders: Sie kombinieren die Repositorydaten in den Arbeitsverzeichnissen, sodass für jeden Branch und jedes Tag, den bzw. das du ausgecheckt hast, ein Arbeitsverzeichnis vorhanden ist. Bei Repositorys mit vielen Branches und Tags könnte durch ein vollständiges Check-Out die Bandbreite stark beansprucht werden, sodass du mit einem partiellen Check-Out beginnen solltest.

  1. Navigiere auf Ihre GitHub Enterprise Server-Instance zur Hauptseite des Repositorys.

  2. Klicke oberhalb der Liste der Dateien auf Code.

    Screenshot: Liste der Dateien auf der Startseite eines Repositorys. Die Schaltfläche „Code“ ist orange umrandet.

  3. Kopiere die URL für das Repository.

    • Um ein Repository über HTTPS zu klonen, klicke unter „HTTPS“ auf .

    • Wenn du das Repository mithilfe eines SSH-Schlüssels klonen möchtest, einschließlich eines Zertifikats, das von der SSH-Zertifizierungsstelle deiner Organisation ausgestellt wurde, wähle SSH und dann aus.

    • Um ein Repository über die GitHub CLI zu klonen, klicke auf GitHub CLI und dann auf .

      Screenshot des Dropdownmenüs „Code“ Rechts neben der HTTPS-URL für das Repository ist ein Kopiersymbol dunkelorange umrandet.

  4. Erstelle einen leeren Checkout des Repositorys:

    $ svn co --depth empty https://github.com/USER/REPO
    > Checked out revision 1.
    $ cd REPO
    
  5. Rufe den trunk-Branch ab. Die Subversion-Bridge ordnet den Trunk dem Git HEAD-Branch zu.

    $ svn up trunk
    > A    trunk
    > A    trunk/README.md
    > A    trunk/gizmo.rb
    > Updated to revision 1.
    
  6. Rufe einen leeren Check-Out des Verzeichnisses branches ab. In diesem Verzeichnis befinden sich alle Nicht-HEAD-Branches, und hier erstellst du Feature-Branches.

    $ svn up --depth empty branches
    Updated to revision 1.
    

Branches erstellen

Zur Erstellung der Branches kannst du auch die Subversion-Bridge für GitHub verwenden.

Stelle auf deinem SVN-Client sicher, dass der Standardbranch auf dem neuesten Stand ist, indem du trunk aktualisierst:

$ svn up trunk
> At revision 1.

Als Nächstes kannst du mithilfe von svn copy einen neuen Branch erstellen:

$ svn copy trunk branches/more_awesome
> A    branches/more_awesome
$ svn commit -m 'Added more_awesome topic branch'
> Adding    branches/more_awesome

> Committed revision 2.

Im Branch-Dropdownmenü des Repositorys kannst du überprüfen, ob der neue Branch erstellt wurde:

Screenshot der Repositoryseite. Ein Dropdownmenü mit einem Branchsymbol und der Bezeichnung „main“ ist mit einem orangefarbenen Rahmen hervorgehoben.

Dies kannst du auch über die Befehlszeile überprüfen:

$ git fetch
> From https://github.com/USER/REPO/
> * [new branch]    more_awesome -> origin/more_awesome

Commits an Subversion

Nachdem du einige Features hinzugefügt und Fehler behoben hast, möchtest du diese Änderungen auf GitHub committen. Dies funktioniert genauso, wie du es von Subversion gewohnt bist. Bearbeite deine Dateien, und verwende svn commit, um die Änderungen aufzuzeichnen:

$ svn status
> M    gizmo.rb
$ svn commit -m 'Guard against known problems'
> Sending    more_awesome/gizmo.rb
> Transmitting file data .
> Committed revision 3.
$ svn status
> ?    test
$ svn add test
> A    test
> A    test/gizmo_test.rb
$ svn commit -m 'Test coverage for problems'
> Adding    more_awesome/test
> Adding    more_awesome/test/gizmo_test.rb
> Transmitting file data .
> Committed revision 4.

Wechseln zwischen Zweigen

Um zwischen Branches zu wechseln, wirst du vermutlich zunächst trunk auschecken wollen:

svn co --depth empty https://github.com/USER/REPO/trunk

Danach kannst du zu einem anderen Branch wechseln:

svn switch https://github.com/USER/REPO/branches/more_awesome

Git-Commit-SHA für einen Subversion-Commit finden

Der Subversion-Server von GitHub stellt die Git-Commit-SHA für jeden Subversion-Commit bereit.

Um diesen Commit-SHA zu finden, solltest du nach der nicht versionierten Remote-Eigenschaft git-commit fragen.

$ svn propget git-commit --revprop -r HEAD https://github.com/USER/REPO
05fcc584ed53d7b0c92e116cb7e64d198b13c4e3

Mit dieser Commit-SHA kannst du beispielsweise nach dem zugehörigen Git-Commit auf GitHub suchen.