How to detect a forced update

后端 未结 3 1887
不思量自难忘°
不思量自难忘° 2020-11-28 11:29

When a branch history is changed on the remote, you typically get

o git@git.server.com:XXXXX/Project.git
 + efe2e8b...cda0ee7 HEAD -> Ant_Config_processin         


        
3条回答
  •  天命终不由人
    2020-11-28 11:55

    You can use git-merge-base command, it finds nearest common ancestor for two commits.

    For fast-forward update, common ancestor for oldrev and newrev must point to oldrev. Sample code to be put into pre-receive hook to block non fast-forward:

    mergebase=`git merge-base $oldrev $newrev`
    if [ "$oldrev" != "$mergebase" ]; then
      echo "Non fast-forward update not allowed for $refname, from ${oldrev:0:16} to ${newrev:0:16} merge base ${mergebase:0:16}"
      exit 1
    fi
    

提交回复
热议问题