Как вывести git ошибка слияния в файл - PullRequest
0 голосов
/ 20 апреля 2020

Я настроил скрипт для периодической перебазировки и объединения изменений в списке дочерних веток разработки:

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, кажется, работает для обнаружения сбоев (тестирование с несуществующей веткой), я не смог перенаправить вывод консоли в файл журнала. Кто-нибудь делал что-то подобное?

1 Ответ

0 голосов
/ 20 апреля 2020

Я понял это; Кажется, это очень простой случай использования >> error.log в выражениях echo:

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:" >> $HOME/logs/error.log
    echo `git log -1` >> $HOME/logs/error.log
  else
    echo "merge successful" >> $HOME/logs/git_rebase.log
  fi

  #git push
done < "../branchlist.txt"
...