Git et les projets Launchpad
Git est mon logiciel de gestion de version principal depuis plusieurs années. Je vous en ai déjà parlé ici avec la gestion des sous-modules, là avec l’exclusion de certains fichiers ou encore là avec l’installation de Gitlab. Vous trouverez l’ensemble des articles traitant de git ici. Aujourd’hui, je vais vous parler de l’utilisation de Git avec les dépôts Launchpad
. Launchpad est une forge logicielle, tout comme Github ou Gitlab, développé par Canonical et accessible via le logiciel de versioning Bazaar (alias bzr).
Problématique
Jongler entre Bazaar, Mercurial, Git et Subversion en fonction des projets devient vite un casse tête. J’ai donc fait le choix d’utiliser principalement git
pour les gouverner tous.
Pour gérer les dépôts Subversion, vous allez pouvoir utiliser le logiciel officiel git-svn
mais pour les dépôts Mercurial
ou Launchpad
rien de vraiment officiel. Pour ma part, j’utilise les extensions développées par Felipe Contreras. Elle permettent l’accès à Mercurial (git-remote-hg) et à Launchpad (git-remote-bzr).
Installation des extensions
Ces extensions sont écrites en Python et nécessitent les bibliothèques mercurial
pour l’accès aux dépôt éponyme et bzrlib
pour l’accès aux dépôts Launchpad.
# apt-get install python-bzrlib python-hglib
L’installation de ces extensions est très simple. Vous devez télécharger le fichier d’extension et le rendre accessible depuis le PATH
.
$ mkdir ~/bin $ wget https://raw.github.com/felipec/git-remote-bzr/master/git-remote-bzr -O ~/bin/git-remote-bzr $ wget https://raw.github.com/felipec/git-remote-hg/master/git-remote-hg -O ~/bin/git-remote-hg $ chmod +x ~/bin/git-remote-bzr ~/bin/git-remote-hg
Vous devrez modifier votre PATH pour intégrer le répertoire bin
de votre HOME
. Si vous utilisez l’interpréteur de commande bash
, la modification de votre fichier ~/.bashrc
fera l’affaire puis il vous faudra recharger son contenu.
$ echo "PATH=\$PATH:~/bin" >> ~/.bashrc $ source ~/.bashrc
Utilisation
La récupération d’une copie du dépôt se fait ensuite presque comme pour les autres projets Git via git clone
.
$ git clone bzr::lp:ubuntu/hello $ git clone bzr::bzr://bzr.savannah.gnu.org/emacs/trunk emacs-trunk
La première commande récupère le dépôt sur Launchpad, alors que la deuxième récupère la branche trunk
d’un dépôt Bazaar hébergé sur bzr.savannah.gnu.org
.
Je n’ai pas encore fait de push sur ce genre de dépôt, je ne peux donc pas vous en parler pour le moment. Normalement cela devrait se passer comme pour un projet standard mais le jour où ça m’arrive j’éditerai cet article pour vous en informer.
Inclusion d’un bzr en sous-module
Suite à l’article sur l’utilisation des sous-modules dans git, j’ai eu à utiliser le projet moderncv
, hébergé sous Launchpad, en tant que sous-module d’un projet git. Le fonctionnement est le même que pour un sous-module git.
$ git submodule add bzr::lp:moderncv moderncv
Le fichier .gitmodules
contient les références du sous-module sous la forme suivante :
[submodule "moderncv"] path = moderncv url = bzr::lp:moderncv
Voila vous en savez autant que moi sur l’utilisation des dépôts Bazaar via git. Si vous avez des questions, suggestions ou autre, les commentaires sont ouverts.