Git : enregistrer les fichiers modifiés et supprimés dans le dépôt

J’ai quelques projets sous WordPress qui sont dans un dépôt git privé. Le système de mise à jour WordPress fait que certains fichiers de l’instance de prod sont modifiés localement.

Pour m’informer quand cela arrive, une cron m’envoie par email de tels changements. Pour committer automatiquement ou non ces fichiers, voici les commandes git que j’utilise :

$ git add -u
$ git commit -a -m "update wordpress"
  • git add -u : permet d’ajouter tous les fichiers déjà référencés dans le git (modifications ou suppressions)
  • git commit -a : commit les modifications dans le dépôt

Bash : renommer des fichiers en remplaçant les espaces

Disons que vous avez une liste de fichiers comme celle-ci :

$ ls -l foie*
foie gras final 2-1.eps		
foie gras step 3.eps		
foie gras step 4.eps		
foie gras step 6.eps		
foie gras step 7.eps

Pour renommer tous les fichiers en remplaçant les espaces par des underscores, utiliser la commande suivante :

for file in foie*; do mv "$file" "`echo $file | tr ' ' '_'`" ; done

Git : installer gitlab sur Ubuntu 14.04

Gitlab est un outil de gestion de dépôts git, review, tickets, activités, etc.. Gitlab possède une version « communauté » que vous pouvez installer sur votre propre serveur.

L’installation sur Ubuntu est assez aisée. Le seul souci que j’ai rencontré concerne les ports bindés par les différents services car je l’ai installé sur un serveur contenant déjà un certain nombre de services. La procédure standard est disponible sur le site de gitlab.

Le serveur utilisé contenait déjà les services suivants :

  • nginx qui utilise les ports 80 et 443
  • apache qui utilise le port 8080

Les ports par défaut utilisés par gitlab sont le 80 pour nginx et 8080 pour unicorn. Pour les changer il faut se rendre dans le fichier /etc/gitlab/gitlab.rb :

external_url 'http://git.domain.com:81'
[...]
unicorn['port'] = 82

external_url va permettre de changer le port par défaut de nginx et le second paramètres parle de lui-même…

Pour prendre en compte les nouveaux paramètres :

gitlab-ctl reconfigure
gitlab-ctl restart

Vous pouvez maintenant vous connecter sur http://git.domain.com:81 pour accéder à votre nouvelle instance gitlab.

Bash : exécuter une commande et tester le contenu de retour

J’ai créé une cron pour vérifier si des changements locaux existent sur des dépôts git.

A priori, il ne devrait pas y en avoir sur des instances en prod mais la théorie reste la théorie, il arrive souvent que des modifications soient apportées en direct sur l’instance, surtout pour des projets persos.

Le but de la commande est d’exécuter un git status -s dans un dépôt et de m’envoyer par email les changements présents. Comme il s’agit d’une tâche cron, le contenu de l’email correspond à la sortie standard. L’autre besoin est d’ajouter un peu de contexte au résultat de la commande en indiquant dans quel dépôt nous nous trouvons.

#!/bin/bash

OUTPUT=$(cd /var/www/tools && git status -s)
if [ -n "${OUTPUT}" ]; then
        echo "git changes in /var/www/tools"
        echo "${OUTPUT}"
        echo
fi

Un email reçu ressemblera à :

----- 8< -----
git changes in /var/www/tools
?? TEST
----- 8< -----