Browse Source

Update shell scripts to compute empty tree object ID

Several of our shell scripts hard-code the object ID of the empty tree.
To avoid any problems when changing hashes, compute this value on
startup of the script.  For performance, store the value in a variable
and reuse it throughout the life of the script.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
brian m. carlson 7 years ago committed by Junio C Hamano
parent
commit
03a7f388da
  1. 4
      git-filter-branch.sh
  2. 4
      git-rebase--interactive.sh
  3. 2
      templates/hooks--pre-commit.sample

4
git-filter-branch.sh

@ -11,6 +11,8 @@ @@ -11,6 +11,8 @@
# The following functions will also be available in the commit filter:

functions=$(cat << \EOF
EMPTY_TREE=$(git hash-object -t tree /dev/null)

warn () {
echo "$*" >&2
}
@ -46,7 +48,7 @@ git_commit_non_empty_tree() @@ -46,7 +48,7 @@ git_commit_non_empty_tree()
{
if test $# = 3 && test "$1" = $(git rev-parse "$3^{tree}"); then
map "$3"
elif test $# = 1 && test "$1" = 4b825dc642cb6eb9a060e54bf8d69288fbee4904; then
elif test $# = 1 && test "$1" = $EMPTY_TREE; then
:
else
git commit-tree "$@"

4
git-rebase--interactive.sh

@ -81,6 +81,8 @@ rewritten_pending="$state_dir"/rewritten-pending @@ -81,6 +81,8 @@ rewritten_pending="$state_dir"/rewritten-pending
# and leaves CR at the end instead.
cr=$(printf "\015")

empty_tree=$(git hash-object -t tree /dev/null)

strategy_args=${strategy:+--strategy=$strategy}
test -n "$strategy_opts" &&
eval '
@ -238,7 +240,7 @@ is_empty_commit() { @@ -238,7 +240,7 @@ is_empty_commit() {
die "$(eval_gettext "\$sha1: not a commit that can be picked")"
}
ptree=$(git rev-parse -q --verify "$1"^^{tree} 2>/dev/null) ||
ptree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
ptree=$empty_tree
test "$tree" = "$ptree"
}


2
templates/hooks--pre-commit.sample

@ -12,7 +12,7 @@ then @@ -12,7 +12,7 @@ then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
against=$(git hash-object -t tree /dev/null)
fi

# If you want to allow non-ASCII filenames set this variable to true.

Loading…
Cancel
Save