mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
install: fix post-checkout hook
We should skip running post-checkout hook on rebases and merges to not accidentally break them in the middle of the process. Git doesn't provide any native mechanisms for hooks to know whether or not this is a rebase/merge that we are going through, but we can use `.git/rebase-merge` existance as a marker. Previous approach has only accounted for branches and was causing issues when checking-out tags. Fixes #3241
This commit is contained in:
@@ -275,9 +275,10 @@ class Git(Base):
|
||||
[
|
||||
# checking out some reference and not specific file.
|
||||
'[ "$3" = "1" ]',
|
||||
# check that we are on some branch/tag and not in detached HEAD
|
||||
# state, so we don't accidentally break a rebase.
|
||||
'[ "$(git rev-parse --abbrev-ref HEAD)" != "HEAD" ]',
|
||||
# make sure we are not in the middle of a rebase/merge, so we
|
||||
# don't accidentally break it with an unsuccessful checkout.
|
||||
# Note that git hooks are always running in repo root.
|
||||
"[ ! -d .git/rebase-merge ]",
|
||||
],
|
||||
"checkout",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user