Я настроил скрипт для периодической перебазировки и объединения изменений в списке дочерних веток разработки:
while read -r child
do
echo "Merging development to $child" 2>&1 >> $HOME/logs/git_rebase.log
git checkout $child
git status
echo "Commencing merge" 2>&1 >> $HOME/logs/git_rebase.log
if [[ ! $(git merge --progress -m 'merge development to child branch' --strategy-option theirs origin/development_does_not_exst 1>/dev/null 2>error.log) ]]; then
echo "git merge for $child failed with the following log:"
echo `git log -1`
else
echo "merge successful"
fi
#git push
done < "../branchlist.txt"
Этот проект является многомодульным, поэтому любые изменения в разработке влияют только на один модуль. Я не слишком обеспокоен конфликтами из-за моей стратегии слияния; единственные изменения в ветвях в branchlist.txt должны быть изменениями, внесенными из ветки разработки в родительский модуль. Тем не менее, я хотел бы знать, если это не удается по какой-либо причине. Поэтому я хотел бы вывести любые ошибки в error.log, а затем отправить их содержимое по электронной почте самому себе.
Пока что мой оператор if, кажется, работает для обнаружения сбоев (тестирование с несуществующей веткой), я не смог перенаправить вывод консоли в файл журнала. Кто-нибудь делал что-то подобное?