Artikelversion: Enterprise Server 2.17
Unterstützung für Subversion-Clients
Der Zugriff auf GitHub-Repositorys kann von Git- und Subversion (SVN)-Clients erfolgen. In diesem Artikel erhalten Sie Informationen zur Ausführung eines Subversion-Clients auf GitHub sowie zu einigen häufigen Problemen, die in Verbindung mit Subversion auftreten können.
GitHub unterstützt Subversion-Clients über das HTTPS-Protokoll. Zur Übertragung von SVN-Befehlen an GitHub wird eine Subversion-Bridge verwendet.
Auf GitHub unterstützte Subversion-Funktionen
Auschecken
Ihr erster Schritt in Verbindung mit Subversion ist der Checkout. Da das Arbeitsverzeichnis, in dem Sie Dateien bearbeiten, in Git-Klonen getrennt von den Repository-Daten geführt wird, enthält das Arbeitsverzeichnis jeweils nur einen Branch.
Subversion-Checkouts unterscheiden sich hier: In Subversion sind die Repository-Daten in den Arbeitsverzeichnissen enthalten, weswegen es für jeden Branch und jedes Tag, das Sie ausgecheckt haben, ein eigenes Arbeitsverzeichnis gibt. Bei Repositorys mit vielen Branches und Tags kann das Auschecken zu einem Bandbreitenproblem werden. In diesem Fall empfiehlt sich zunächst ein teilweiser Checkout.
-
Navigiere in GitHub Enterprise zur Hauptseite des Repository.
-
Klicke unter dem Repository-Namen auf Clone or download (Klonen oder herunterladen).
-
Um ein Repository mittels HTTPS zu klonen, klicke unter „Clone with HTTPS" (mit HTTPS klonen) auf . Um das Repository mittels einem SSH-Schlüssel zu klonen klicke auf Use SSH (SSH verwenden), dann klicke auf .
-
Erstellen Sie einen leeren Checkout des Repositorys:
$ svn co --depth empty https://github.com/user/repo > Checked out revision 1. $ cd repo
-
Rufen Sie den
trunk
-Branch ab. Die Subversion-Bridge ordnet den Trunk dem Git HEAD-Branch (i. d. R.master
) zu.$ svn up trunk > A trunk > A trunk/README.md > A trunk/gizmo.rb > Updated to revision 1.
-
Rufen Sie einen leeren Checkout des Verzeichnisses
branches
ab. In diesem Verzeichnis befinden sich alle Nicht-HEAD
-Branches, und hier erstellen Sie auch die Feature-Branches.$ svn up --depth empty branches Updated to revision 1.
Branches erstellen
Zur Erstellung der Branches können Sie auch die Subversion-Bridge für GitHub verwenden.
Stellen Sie auf Ihrem SVN-Client sicher, dass „master“ der aktuelle Branch ist. Aktualisieren Sie hierzu trunk
:
$ svn up trunk
> At revision 1.
Nun können Sie svn copy
zur Erstellung eines neuen Branches verwenden:
$ 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-Dropdown des Repositorys können Sie überprüfen, ob der neue Branch erstellt wurde:
Dies können Sie 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 Sie einige Features hinzugefügt und Bugs behoben haben, möchten Sie diese Änderungen auf GitHub festschreiben. Dies funktioniert genauso, wie Sie es von Subversion gewohnt sind. Verwenden Sie nach der Bearbeitung Ihrer Dateien svn commit
, um Ihre Änderungen festzuschreiben:
$ 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.
Zwischen Branches wechseln
Um zwischen Branches zu wechseln, werden Sie vermutlich zunächst trunk
auschecken:
$ svn co --depth empty https://github.com/user/repo/trunk
Danach können Sie 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 diese Commit-SHA zu finden, sollten Sie 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 können Sie beispielsweise nach dem zugehörigen Git-Commit auf GitHub suchen.