URL: https://linuxfr.org/news/gerer-son-espace-de-travail-git-avec-gws Title: Gérer son espace de travail git avec "gws" Authors: StreakyCobra Benoît Sibaud, BAud, palm123, Ontologia et Nils Ratusznik Date: 2015年02月22日T10:50:13+01:00 License: CC By-SA Tags: zsh, git, gws, bash et github Score: 38 [`gws`](https://streakycobra.github.io/gws/) est un outil KISS (script bash, compatible zsh) pour gérer de manière simple un espace de travail composé de plusieurs dépôts git. Ça ne vous parle pas et vous semble être un pitch commercial ? Laissez-moi l'aborder autrement ; si vous vous reconnaissez dans quelques-unes de ces questions, cet outil pourrait vous être utile : - Vous avez un dossier `~/dev/`, `~/code/` ou `~/workspace/` dans votre répertoire personnel ? - Vous y avez cloné dedans plein de dépôts git ? - Vous ne savez jamais quels dépôts, branches, commits n'ont pas été synchronisés ? - Vous en avez marre d'avoir à faire 17 _git pull_ manuellement le lundi matin au boulot ? - Vous déprimez en arrivant dans le train de voir que vous n'avez pas récupéré votre dernier projet sur votre ordinateur portable ? ---- [Journal à l'origine de la dépêche](http://linuxfr.org/users/streakycobra/journaux/gerer-son-espace-de-travail-git-avec-gws) [Projet sur Github](https://streakycobra.github.io/gws/) [Version empaquetée dans Arch Linux](https://aur4.archlinux.org/packages/gws/) ---- Comment ça marche? ================== 1. Premièrement créez dans votre répertoire (`~/dev/` par exemple) un fichier `.projects.gws` avec un contenu de ce style (que vous adapterez à vos besoins bien sûr): ``` tools/coursera-dl | https://github.com/dgorissen/coursera-dl | tools/peru | https://github.com/buildinspace/peru | tools/q | https://github.com/harelba/q | work/docker-gitlab | https://github.com/sameersbn/docker-gitlab.git | work/neuraltalk | https://github.com/karpathy/neuraltalk.git | ``` 2. Lancez `gws update` qui va cloner tous les dépôts manquants :  3. Hackez un peu ! 4. Lancez `gws` pour voir l'état de votre espace de travail (dépôts, branches) en un clin d’œil :  5. Faites éventuellement un `pull fast-forward` avec la commande `gws ff`. Vous aurez ainsi avec vous la dernière version de tous vos projets. Très utile avant de partir prendre le train. 6. Avant de partir du boulot, faites un petit `gws` à nouveau pour être sûr que vous avez bien synchronisé tous vos changements, par exemple pour retrouver vos fichiers de configuration en arrivant à la maison. Il y a bien quelques possibilités en plus, mais je vous laisse le soin de lire le [README](https://github.com/StreakyCobra/gws/blob/master/README.md) (en anglais) pour la liste exhaustive des possibilités. Juste un petit aguichage/_teasing_ rien que pour vous : - La commande `gws` est utilisable depuis n'importe quel endroit de l'espace de travail. - Vous pouvez créer plusieurs espaces de travail différents, faites plusieurs dossiers avec chacun son propre `.projects.gws` - En versionnant le fichier `.projects.gws` sur github, par exemple, vous pouvez vous retrouver avec exactement le même workspace sur tous vos ordinateurs. - Si vous le versionnez, vous pouvez même rajouter le dossier courant (`. | ... |`) dans le fichier `.projects.gws` pour le surveiller aussi. - Il y a possibilité de mettre un fichier `.ignore.gws` que vous ne versionnerez pas pour filtrer avec des expressions rationnelles certains projets — par exemple les projets du boulot à la maison. Où je le trouve? ================ Il est disponible sur [Github](https://streakycobra.github.io/gws/) et empaqueté pour [Arch Linux]( https://aur4.archlinux.org/packages/gws/). Pour les autres distributions, c'est un simple script bash, mettez-le quelque part dans votre `$PATH`. Ou mieux, faites-en un paquet. PS : Et pour répondre d'avance à la question: «Un script bash de 830 lignes, t'es malade?» je vous réponds: [YOLO](http://dictionnaire-urbain.fr/?p=457)[^1]. [^1]: Mais oui si c’était à refaire je choisirais un autre langage. C'est impossible à maintenir un script bash de cette taille. J'ai dans l'idée, un jour, de le réécrire dans un autre langage et de supporter plus de VCS (mercurial, svn, ...) et plus d'options. Un jour... qui sait.