mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-01-14 04:50:20 -06:00
31 lines
1.1 KiB
Plaintext
31 lines
1.1 KiB
Plaintext
z40=0000000000000000000000000000000000000000
|
|
while read local_ref local_sha remote_ref remote_sha
|
|
do
|
|
if [ "$local_sha" != $z40 ]; then
|
|
if [ "$remote_sha" = $z40 ]; then
|
|
# First ancestor not found in remote
|
|
first_ancestor=$(git rev-list --topo-order --reverse "$local_sha" --not --remotes="$1" | head -n 1)
|
|
if [ -n "$first_ancestor" ]; then
|
|
# Check that the ancestor has at least one parent
|
|
git rev-list --max-parents=0 "$local_sha" | grep "$first_ancestor" > /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
args="--all-files"
|
|
else
|
|
source=$(git rev-parse "$first_ancestor"^)
|
|
args="--origin $local_sha --source $source"
|
|
fi
|
|
fi
|
|
else
|
|
args="--origin $local_sha --source $remote_sha"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
if [ "$args" != "" ]; then
|
|
args="$args --hook-stage push"
|
|
else
|
|
# If args is empty, then an attempt to push on an empty
|
|
# changeset is being made. In this case, just exit cleanly
|
|
exit 0
|
|
fi
|