Sto lavorando ad uno script di bash per il mio team per far rispettare regolarmente il rebasing dei rami di lavoro. Il problema che sto affrontando al momento è come determinare se un ramo è dietro il master e/o se ha bisogno di essere ridefinito, piuttosto che tentare ciecamente di ribattere il ramo.Come verificare pragmaticamente con lo script di bash se è necessario ridefinire un ramo in git?
Ecco una versione semplificata di quello che ho finora:
#Process each repo in the working directory.
for repo_dir in $(ls -1); do
# if working branch is clean ...
# BEGIN update of local master
git checkout master
git fetch origin
git merge remotes/origin/master
# END update of local master
for sync_branch in $(git branch | cut -c 3-); do
if [ "$sync_branch" != "master" ]; then
# BEGIN rebase working branch
git checkout $sync_branch
git rebase master
# Do NOT push working branch to remote.
# END rebase working branch
fi
done
fi
done
Tutte le idee sarebbe molto apprezzato. Grazie!
Penso che non ce ne sia bisogno. 'git rebase' dovrebbe controllarlo e trasformarsi in un no-op (" Current branch è aggiornato. ") se il ramo ha il capo del master nel suo log di commit. –
PSkocik
@PSkocik Il motivo per cui voglio farlo è diverso dalla capacità di auto-controllo di 'git rebase'. Ci sono altre azioni che voglio che il mio script esegua a seconda che sia necessario o meno un rebase. –