--- categories: ['OpenBSD','Système','Développement'] date: 2016-12-10T13:54:10+02:00 description: "Utiliser le gestionnaire de version Git, sous OpenBSD" draft: false include_toc: true show_comments: false tags: ['OpenBSD','git'] title: "Git" translationKey: 'openbsd-git' --- ## Description **[GIT](https://git-scm.com/)** est un "gestionnaire de contenu de répertoire" conçu pour gérer des projets massifs avec rapidité et efficacité, GIT entre dans la catégorie des outils de gestion de code source distribués, semblable à par exemple GNU Arch ou Monotone (ou, dans le monde commercial, BitKeeper). Chaque répertoire de travail GIT est un référentiel à part entière avec des capacités de suivi de révision complètes, ne dépendant pas de l'accès réseau à un serveur central. ## Installation **{{< inside2 l="sys/openbsd/pkg" t="Installez" a="installer" >}} le paquet `git`**. {{}} Pour pouvoir utiliser la fonction `git send-email`, et utiliser `smtp`, `tls`, il vous faut installer aussi les packages suivants : * `p5-Net-SMTP-SSL` * `p5-Authen-SASL` {{}} ## Configuration Le fichier de configuration : `~/.gitconfig` Exemple minimaliste : ```cfg [user] name = identifiant email = email@domain.com ``` ### Signature Depuis la version 1.7.9 de Git, il est possible de signer les commits, ce qui permet d'assurer que vous êtes bien l'auteur de ceux-ci. Pour signer vos commits, il est nécessaire d'avoir créé dans un premier temps une clé GPG - *ce mémo ne vous montrera pas comment faire*…
L'outil GPG2 est fourni de base dans OpenBSD. Néanmoins, il vous faudra créer un lien symbolique pour lui faire croire qu'il utilise GPG, car Git semble ne pas être capable de comprendre ! Vous devrez ensuite modifier votre fichier de configuration afin de rajouter l'option `signingkey` dans la partie de configuration [user], tel que : ```cfg [user] name = identifiant email = email@domain.com signingkey = votre_id_gpg ``` La commande pour signer : * un commit : `git commit -a -S -m 'un ou plusieurs longs commentaires'` * un tag : `git tag -s v1.5 -m 'mon tag signé'` *Pour en connaître plus sur le fonctionnement de [git et le fait de signer](https://git-scm.com/book/fr/v2/Utilitaires-Git-Signer-votre-travail), veuillez lire la doc officielle…* ## Dépannage ### error: cannot run gpg: No such file or directory Vous avez le message d'erreur suivant dans son ensemble : ```sh error: cannot run gpg: No such file or directory error: impossible de lancer gpg. fatal: échec de l'écriture de l'objet commit ``` L'outil GPG n'est pas trouvé ; normal sous OpenBSD, il n'existe pas. L'astuce est de lier GPG au binaire GPG2 : `# ln -sf /usr/local/bin/gpg2 /usr/local/bin/gpg` ### gpg: échec de la signature : Inappropriate ioctl for device Le message d'erreur est le suivant : ```sh gpg: échec de la signature : Inappropriate ioctl for device gpg: signing failed: Inappropriate ioctl for device error: gpg n'a pas pu signer les données fatal: échec de l'écriture de l'objet commit ``` Il vous manque les paquets suivants : **`pinentry` `pinentry-gtk2`** ou **`pinentry-gtk3`** - veillez à les {{< inside2 l="sys/openbsd/pkg" t="installer" a="installer" >}} ! *Pour info, il semble que ce soit lié au [bogue 2680](https://bugs.gnupg.org/gnupg/issue2680) relatif à la version 2.1x de GPG.* ## Documentation N'oubliez pas de **lire le fichier `/usr/local/share/doc/pkg-readmes/git`** ! ;-) ⇒ Git : * La **documentation de référence** : https://git-scm.com/book/fr/v2 * Un **petit [guide git](https://rogerdudler.github.io/git-guide/index.fr.html) pour démarrer** ⇒ GPG : * Comment bien configuré GPG pour l'utiliser correctement : {{< inside2 l="sec/gpg/gpg-usage-securise" >}} * Un guide des {{< inside2 l="sec/gpg/gpg-guide-bonnes-pratiques" t="bonnes pratiques pour créer ses clés GPG" >}}… --- ## Historique J'ai écrit historiquement cette documentation sur le wiki de la communauté "OpenBSD Pour Tous". ---