В настоящее время я использую следующие две функции bash для чанкования нашего репозитория git, чтобы определить, какой номер последней версии есть в каждой ветви. Поскольку у нас есть несколько git-хуков, включая пост-извлечение, функция gitTrackAll
может занять некоторое время. Есть ли способ сделать то, что я делаю, не проверяя каждую ветку, не вытягивая ее и не запуская git show?
Чтобы уточнить, я сейчас проверяю каждую ветку и получаю содержимое файла VERSION. По сути, это говорит мне, что является последней версией, которая была объединена с этой веткой. Иногда у нас возникают ветки, в то время как разработчик работает над ними. Этот список дает нам быстрый способ узнать, что за этим стоит.
gitTrackAll && gitBranchVersions
function gitTrackAll(){
remote='origin';
for brname in `git branch -r | grep $remote | grep -v master | grep -v HEAD| awk '{gsub(/^[^\/]+\//,"",$1); print $1}'`; do
git checkout "$brname"
git branch --set-upstream-to $remote/$brname $brname;
git pull
done
git checkout master
}
function gitBranchVersions(){
line='--------------------------------------------------------------------------------'
line="$line$line"
for branch in $(git for-each-ref --format='%(refname)' refs/heads/); do
VER=$(git show "$branch":VERSION);
printf "%s %s $VER\n" $branch "${line:${#branch}}"
done
}
Результирующий вывод выглядит примерно так (имена ветвей изменены)
refs/heads/1954-branch-a ---------------------------------------------------------------------------------------------------------------------------------------- 2.9.27
refs/heads/1955-branch-b ---------------------------------------------------------------------------------------------------------------------------------------- 2.9.43
refs/heads/1965-branch-c ---------------------------------------------------------------------------------------------------------------------------------------- 2.9.32
refs/heads/1968-branch-d ---------------------------------------------------------------------------------------------------------------------------------------- 2.9.101
refs/heads/1969-branch-e ---------------------------------------------------------------------------------------------------------------------------------------- 2.9.114
refs/heads/master ----------------------------------------------------------------------------------------------------------------------------------------------- 2.9.115