aboutsummaryrefslogtreecommitdiff
path: root/tests/resources/repositories/repo-2/.gitdir/hooks/push-to-checkout.sample
diff options
context:
space:
mode:
Diffstat (limited to 'tests/resources/repositories/repo-2/.gitdir/hooks/push-to-checkout.sample')
-rwxr-xr-xtests/resources/repositories/repo-2/.gitdir/hooks/push-to-checkout.sample78
1 files changed, 0 insertions, 78 deletions
diff --git a/tests/resources/repositories/repo-2/.gitdir/hooks/push-to-checkout.sample b/tests/resources/repositories/repo-2/.gitdir/hooks/push-to-checkout.sample
deleted file mode 100755
index d29f2d4..0000000
--- a/tests/resources/repositories/repo-2/.gitdir/hooks/push-to-checkout.sample
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/nix/store/b45zavallnsvqwjs9wg9xw167jcs0935-bash-4.4-p23/bin/bash
-
-# An example hook script to update a checked-out tree on a git push.
-#
-# This hook is invoked by git-receive-pack(1) when it reacts to git
-# push and updates reference(s) in its repository, and when the push
-# tries to update the branch that is currently checked out and the
-# receive.denyCurrentBranch configuration variable is set to
-# updateInstead.
-#
-# By default, such a push is refused if the working tree and the index
-# of the remote repository has any difference from the currently
-# checked out commit; when both the working tree and the index match
-# the current commit, they are updated to match the newly pushed tip
-# of the branch. This hook is to be used to override the default
-# behaviour; however the code below reimplements the default behaviour
-# as a starting point for convenient modification.
-#
-# The hook receives the commit with which the tip of the current
-# branch is going to be updated:
-commit=$1
-
-# It can exit with a non-zero status to refuse the push (when it does
-# so, it must not modify the index or the working tree).
-die () {
- echo >&2 "$*"
- exit 1
-}
-
-# Or it can make any necessary changes to the working tree and to the
-# index to bring them to the desired state when the tip of the current
-# branch is updated to the new commit, and exit with a zero status.
-#
-# For example, the hook can simply run git read-tree -u -m HEAD "$1"
-# in order to emulate git fetch that is run in the reverse direction
-# with git push, as the two-tree form of git read-tree -u -m is
-# essentially the same as git switch or git checkout that switches
-# branches while keeping the local changes in the working tree that do
-# not interfere with the difference between the branches.
-
-# The below is a more-or-less exact translation to shell of the C code
-# for the default behaviour for git's push-to-checkout hook defined in
-# the push_to_deploy() function in builtin/receive-pack.c.
-#
-# Note that the hook will be executed from the repository directory,
-# not from the working tree, so if you want to perform operations on
-# the working tree, you will have to adapt your code accordingly, e.g.
-# by adding "cd .." or using relative paths.
-
-if ! git update-index -q --ignore-submodules --refresh
-then
- die "Up-to-date check failed"
-fi
-
-if ! git diff-files --quiet --ignore-submodules --
-then
- die "Working directory has unstaged changes"
-fi
-
-# This is a rough translation of:
-#
-# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX
-if git cat-file -e HEAD 2>/dev/null
-then
- head=HEAD
-else
- head=$(git hash-object -t tree --stdin </dev/null)
-fi
-
-if ! git diff-index --quiet --cached --ignore-submodules $head --
-then
- die "Working directory has staged changes"
-fi
-
-if ! git read-tree -u -m "$commit"
-then
- die "Could not update working tree to new HEAD"
-fi