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="run --all-files" else source=$(git rev-parse "$first_ancestor"^) args="run --origin $local_sha --source $source" fi fi else args="run --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