GitHub prend en charge les clients Subversion via le protocole HTTPS. Nous utilisons un pont Subversion pour communiquer des commandes svn à GitHub.
Note
La prise en charge de Subversion sera supprimée avec la version 3.13 de GitHub. Pour plus d'informations, consultez le blog de GitHub.
Fonctionnalités de Subversion prises en charge sur GitHub
Checkout
La première chose que vous voudrez faire est une extraction Subversion. Du fait que les clones Git maintiennent le répertoire de travail (là où vous modifiez vos fichiers) séparé des données du dépôt, il n’y a qu’une seule branche dans le répertoire de travail à la fois.
Les extractions Subversion fonctionnent différemment : comme elles combinent les données du dépôt dans les répertoires de travail, il y a un répertoire de travail pour chaque branche et chaque étiquette que vous avez extraites. Pour les dépôts contenant beaucoup de branches et d’étiquettes, tout extraire peut générer une charge de bande passante supplémentaire, et il vaut donc mieux commencer par une extraction partielle.
-
Sur GitHub, accédez à la page principale du référentiel.
-
Au-dessus de la liste des fichiers, cliquez sur Code.
-
Copiez l’URL du dépôt.
-
Pour cloner le dépôt avec le protocole HTTPS, sous « HTTPS », cliquez sur .
-
Pour cloner le dépôt avec une clé SSH, en incluant un certificat émis par l’autorité de certification SSH de votre organisation, cliquez sur SSH et sur .
-
Pour cloner un dépôt avec l’GitHub CLI, cliquez sur GitHub CLI et sur .
-
-
Effectuez une extraction vide du dépôt :
$ svn co --depth empty https://github.com/USER/REPO > Checked out revision 1. $ cd REPO
-
Obtenez la branche
trunk
. Le pont Subversion mappe la branche principale (trunk) à la branche Git HEAD.$ svn up trunk > A trunk > A trunk/README.md > A trunk/gizmo.rb > Updated to revision 1.
-
Obtenez une extraction vide du répertoire
branches
. C’est là où se trouvent toutes les branches vivantes autres queHEAD
, et où vous créez des branches de fonctionnalité.$ svn up --depth empty branches Updated to revision 1.
Créer des branches
Vous pouvez également créer des branches en utilisant le pont Subversion vers GitHub.
À partir de votre client svn, vérifiez que la branche par défaut est la branche active en mettant à jour trunk
:
$ svn up trunk
> At revision 1.
Ensuite, vous pouvez utiliser svn copy
pour créer une autre branche :
$ 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.
Vous pouvez vérifier que la nouvelle branche existe bien dans la liste déroulante des branches du dépôt :
Vous pouvez aussi vérifier l’existence de la nouvelle branche via la ligne de commande :
$ git fetch
> From https://github.com/USER/REPO/
> * [new branch] more_awesome -> origin/more_awesome
Effectuer des commits sur Subversion
Après avoir ajouté quelques fonctionnalités et résolu quelques bogues, vous voudrez commiter ces modifications sur GitHub. Le processus est le même que ce que vous connaissez avec Subversion. Modifiez vos fichiers et utilisez svn commit
pour enregistrer vos modifications :
$ 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.
Basculement entre les branches
Pour basculer entre les branches, vous voudrez probablement commencer par une extraction de trunk
:
svn co --depth empty https://github.com/USER/REPO/trunk
Vous pouvez ensuite basculer vers une autre branche :
svn switch https://github.com/USER/REPO/branches/more_awesome
Rechercher le SHA de commit Git pour un commit Subversion
Le serveur Subversion de GitHub expose le SHA de commit Git pour chaque commit Subversion.
Pour voir le SHA de commit, vous devez demander la propriété distante non versionnée git-commit
.
$ svn propget git-commit --revprop -r HEAD https://github.com/USER/REPO
05fcc584ed53d7b0c92e116cb7e64d198b13c4e3
Avec ce SHA de commit, vous pouvez, par exemple, rechercher le commit Git correspondant sur GitHub.