#!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 source "$(dirname -- "$0")/../load.sh" || exit 1 require: git chdir= all= args=( "afficher l'état du dépôt" "[-d chdir] [-a patterns...] Si l'option -a est utilisée, ce script accepte comme arguments une liste de patterns permettant de filtrer les répertoires concernés" -d:,--chdir:BASEDIR chdir= "répertoire dans lequel se placer avant de lancer les opérations" -a,--all all=1 "faire l'opération sur tous les sous-répertoires de BASEDIR qui sont des dépôts git" ) parse_args "$@"; set -- "${args[@]}" if [ -n "$chdir" ]; then cd "$chdir" || die fi if [ -n "$all" ]; then # liste de sous répertoires if [ $# -gt 0 ]; then # si on a une liste de patterns, l'utiliser setx -a dirs=ls_dirs . "$@" else dirs=() for dir in */.git; do [ -d "$dir" ] || continue dirs+=("${dir%/.git}") done fi setx cwd=pwd for dir in "${dirs[@]}"; do cd "$dir" || die setx status=git status --porcelain cd "$cwd" if [ -n "$status" ]; then etitle "$dir" echo "$status" fi done else # répertoire courant uniquement args=() isatty || args+=(--porcelain) git status "${args[@]}" fi