Déploiement de logiciels avec Git et SVN via SSH

Depuis le lancement de l’accès SSH sur notre environnement d’hébergement mutualisé Linux, vous disposez des binaires Git et SVN. Ceux-ci vous permettent non seulement de faire de la gestion de versions, mais aussi de récupérer des données. En d’autres termes, vous pouvez déployer à partir d’un dépôt de gestion de versions.

Si vous utilisez des étiquettes et des branches, vous pouvez envoyer une version spécifique de votre logiciel vers notre environnement. Et ce, alors que vous êtes peut-être encore en plein développement de votre application dans une branche de votre dépôt.

Vous pouvez appliquer deux stratégies :

  • Exporter les données de votre branche afin que seuls les fichiers sur votre pack soient conservés
  • Extraire la branche de votre projet et ainsi aussi conserver les informations du serveur et de révision

Subversion

Subversion (également connu sous son abréviation SVN) permet de faire de la gestion de version de façon très traditionnelle. La stratégie de base est la suivante : il y a un seul serveur central où tout le code est conservé dans différentes versions. Tout le déploiement se fait à partir de ce serveur central. Entre-temps, Subversion est devenu un projet Apache de haut niveau. Pour de plus amples informations concernant son fonctionnement, rendez-vous sur le site web officiel.

Sur notre environnement, nous avons juste prévu un client SVN, pas un serveur. Le but est que vous vous connectiez à votre serveur Subversion à partir de notre hébergement.

Exemples:

Pour exporter une branche SVN vers votre pack, vous pouvez p. ex. utiliser la commande suivante :

svn export http://votre.serveur.svn/repo/trunk/ .

La commande ci-dessus établira une connexion avec votre serveur SVN (qui tourne sur « votre.serveur.svn ») et s’adressera au dépôt « repo ». Dans le cas présent, c’est la branche « trunk » de ce dépôt qui est récupérée.

Vous pouvez aussi extraire une branche. Voici comment procéder :

svn co http://votre.serveur.svn/repo/trunk/ .

Les fichiers de cette branche se retrouveront eux aussi sur votre pack, mais un dossier « .svn » sera également prévu afin de conserver les informations de révision. Via une commande « svn up », vous pouvez faire en sorte que d’éventuelles modifications soient automatiquement récupérées. Vous pouvez également renvoyer des modifications via la commande « svn commit ».

Git

Bien que Git soit déjà assez ancien et qu’il était autrefois utilisé principalement pour gérer les versions dans le cadre du développement du noyau Linux, il est désormais devenu standard. Avec Git, il n’est pas nécessaire d’avoir un seul serveur central, ce qui n’est pas le cas avec Subversion. Git fonctionne de manière distribuée et des dépôts peuvent être synchronisés dans les deux directions. Vous retrouverez de plus amples informations concernant ce fonctionnement sur le site web officiel de Git.

Vous pouvez également créer un nouveau dépôt Git sur votre pack et conserver les éventuelles modifications, que vous pouvez synchroniser avec d’autres dépôts. Malgré qu’il s’agisse d’une approche intéressante, pour les déploiements, nous appliquons plutôt une stratégie pull au lieu d’une stratégie push.

Exemples:

Pour pouvoir récupérer un dépôt Git, vous pouvez utiliser la commande suivante :

git clone --depth=1 git://github.com/username/repo.git .

La commande ci-dessus établira une connexion avec votre serveur Git (dans le cas présent, il s’agit de github.com) et s’adressera au dépôt « repo ». Ce dépôt tourne au sein de votre compte qui est ici représenté par « username ».

La commande « git clone » est l’équivalent de « svn co ». En d’autres termes : les informations concernant les versions sont également récupérées et placées dans le dossier « .git ». Vous pouvez donc contribuer à ce dépôt et transmettre des modifications.

Pour vous limiter à une exportation des données, il vous suffit de supprimer le dossier « .git » après le « git clone ». Vous pouvez faire cela de la manière suivante :

rm –rf .git

Pour faire d’une pierre deux coups, vous pouvez combiner les deux commandes comme suit :

git clone --depth=1 git://github.com/username/repo.git . && rm –rf .git

Le paramètre « --depth=1 » limite la quantité d’information sur la version récupérée. Si vous souhaitez supprimer cette limite, il vous suffit d’omettre ce paramètre.