Re: [PATCH v3] Make GIT_INDEX_FILE apply to git-commit
Rémi Vanicat <vanicat@debian.org> writes:
Show 9 quoted lines
> @@ -26,7 +26,7 @@ refuse_partial () {
> }
>
> TMP_INDEX=
> -THIS_INDEX="$GIT_DIR/index"
> +THIS_INDEX="${GIT_INDEX_FILE:-$GIT_DIR/index}"
> NEXT_INDEX="$GIT_DIR/next-index$$"
> rm -f "$NEXT_INDEX"
> save_index () {This is just a "purist" question, but I wonder if we want to differentiate the case where GIT_INDEX_FILE is set to empty and GIT_INDEX_FILE is not set at all?
Show 14 quoted lines
> diff --git a/t/t7500-commit.sh b/t/t7500-commit.sh
> index abbf54b..3e5abef 100755
> --- a/t/t7500-commit.sh
> +++ b/t/t7500-commit.sh
> @@ -93,4 +93,17 @@ test_expect_success 'commit message from file should override template' '
> commit_msg_is "standard input msg"
> '
>
> +test_expect_success 'using GIT_INDEX_FILE' '
> +
> + echo "some new content" >file &&
> + GIT_INDEX_FILE=.git/another_index git add file &&
> + GIT_INDEX_FILE=.git/another_index \
> + git commit -m "commit using another index" &&
Tests that git-commit does not choke on committing the addion a new 'file'.
> + git reset HEAD &&
> + git diff HEAD -- file >current &&
> + touch empty-file &&
> + diff empty-file current
Clobbers the index that the above GIT_INDEX_FILE trick should not have touched before making sure of that, which is bad, and then makes sure that the new file actually has the right contents.
So, what I would suggest is:
* Your "GIT_INDEX_FILE=... git-commit" test -- git-commit
should not fail;
+ Test that the path you modified in the above commit (in this
case, 'file') matches between index you used in the commit
and the resulting commit;
* Test that the path you modified in the above commit matches
between the HEAD, the alternate index and the work tree (your
latter test).
+ Test that the original index the above wanted to preserve was
not clobbered by git-commit;
+ Test git-commit runs sensibly even when it is given a
nonexistent file as GIT_INDEX_FILE.
Perhaps like this, instead of your patch to t/t7500:
test_expect_success 'using alternate GIT_INDEX_FILE (1)' '
cp .git/index saved-index &&
(
echo some new content >file &&
GIT_INDEX_FILE=.git/another_index &&
export GIT_INDEX_FILE &&
git add file &&
git commit -m "commit using another index" &&
git diff-index --exit-code HEAD &&
git diff-files --exit-code
) &&
cmp .git/index saved-index >/dev/null
'
test_expect_success 'using alternate GIT_INDEX_FILE (2)' '
cp .git/index saved-index &&
(
rm -f .git/no-such-index &&
GIT_INDEX_FILE=.git/no-such-index &&
export GIT_INDEX_FILE &&
git commit -m "commit using nonexistent index" &&
test -z "$(git ls-files)" &&
test -z "$(git ls-tree HEAD)"
) &&
cmp .git/index saved-index >/dev/null
'