Je suis assez convaincu qu'il n'y a pas un moyen pour ce faire. Rappelez-vous que "git rebase maître" peut aussi vous laisser tomber en arrière de la coquille avoir besoin de vous pour résoudre les conflits de fusion, donc si vous voulez écrire un script pour automatiser tout cela, vous devez tenir compte.
Vous pouvez assez facilement faire le suivi sur les secteurs qui ont besoin d'être mis à jour. Hmm, pour n'importe quelle branche, "git rev-liste de branche..maître" produira en sortie si la branche n'est pas à jour wrt (c'est à dire juste s'engage sur le dessus de la) maître. Si vous avez besoin d'une boucle sur toutes les têtes à l'exception de master de produire un rapport (nb "git show-branche" sera à peu près le faire):
git for-each-ref 'refs/heads/*' | \
while read rev type ref; do
branch=$(expr "$ref" : 'refs/heads/\(.*\)' )
revs=$(git rev-list $rev..master)
if [ -n "$revs" ]; then
echo $branch needs update
git diff --summary --shortstat -M -C -C $rev master
fi
done
Donc si vous sentez courageux, vous pourriez remplacer cette "git diff" avec quelque chose comme "git checkout branche $ & & git rebase maître" (ou peut-être juste "git pull --rebase" si vous avez le configurer). Je pense que vous auriez alors à vérifier l'existence d'un ".git/git rebase-appliquer" répertoire ou consulter l'index pour les non fusionné les fichiers ("git ls-fichiers -u") pour tester si nous avons été laissées en attente pour effectuer une fusion.
Bien sûr, si il n'y a pas de conflits, alors c'est facile... c'est la production de quelque chose qui fonctionne également lorsqu'il n'est pas facile c'est le problème :p
Et ce n'est pas nécessairement ce qui se passe si une de vos succursales est basé sur quelque chose d'autre... c'est pourquoi je l'ai mentionné à l'aide de "git pull --rebase" au lieu de cela, parce que ce serait cela, selon la direction de la configuration, pas aveuglément à partir du maître. Bien que la détection n'est pas basé sur la branche de configuration... peut-être qu'il serait plus facile juste pour vérifier chaque branche et de faire "git pull" et de laisser la direction de la configuration de tout gérer, y compris si rebase ou de fusion?