Git post commit: skip --amend и rebase

У меня есть пост-коммитный хук, который делает вещи без ruby. Это работает очень хорошо, но в некоторых случаях я хотел бы пропустить выполнение кода, когда я делаю ребаз или когда я делаю commit --amend.

У кого-то есть идея, как я не мог вызвать хук post-commit в этих случаях или какой-либо обходной путь?

Greg

2 ответа

Решение

При перебазировании, есть каталог с именем rebase-merge присутствует в .git папка. Это может быть подход, чтобы отключить крюк во время rebase (начало rebase кстати указывается pre-rebase крючок).

Учитывая --amend однако я не могу вам помочь.

Если вы хотите обнаружить git commit --amend с помощью хука, это ваш лучший вариант

удар

if [[ $(ps -ocommand= -p $PPID) == "git commit --amend" ]]; then
    echo "always allow git commit --amend"
    exit 0
fi

Рубин

parent=`ps -ocommand= -p #{Process.ppid}`.chomp
if parent == "git commit --amend"
  # Always allow an amend
  puts "always allow git commit --amend"
  exit 0
end

псевдонимы git и shell раскрываются в выходных данных оболочки, так что это относится и к этим случаям

Вдохновение: https://github.com/brigade/overcommit/issues/146

Другие вопросы по тегам