Git post commit: skip --amend and rebase

后端 未结 2 1528
执笔经年
执笔经年 2021-02-15 05:41

I have a post-commit hook that does stuff un ruby. It works very well but in some cases I would like to skip the code execution when I do a rebase or when I do a commit --amend.

相关标签:
2条回答
  • 2021-02-15 06:00

    When rebasing, there's a directory called rebase-merge present in the .git folder. That could be an approach to disable the hook during a rebase (the start of a rebase btw is indicated by the pre-rebase hook).

    Regarding the --amend however, I can't help you.

    0 讨论(0)
  • 2021-02-15 06:10

    If you want to detect git commit --amend from a hook, this is your best option

    bash

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

    ruby

    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 and shell aliases are expanded in the shell output, so this covers those cases too

    Inspiration: https://github.com/brigade/overcommit/issues/146

    0 讨论(0)
提交回复
热议问题