Commit 88e38808 authored by Lars Noschinski's avatar Lars Noschinski Committed by Junio C Hamano

filter-branch -d: Export GIT_DIR earlier

The improved error handling catches a bug in filter-branch when using
-d pointing to a path outside any git repository:

$ git filter-branch -d /tmp/foo master
fatal: Not a git repository (or any of the parent directories): .git

This error message comes from git for-each-ref in line 224. GIT_DIR is
set correctly by git-sh-setup (to the foo.git repository), but not
exported (yet).
Signed-off-by: default avatarLars Noschinski <lars@public.noschinski.de>
Acked-by: Johannes Schindelin's avatarJohannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
parent 51b2ead0
......@@ -220,6 +220,12 @@ die ""
# Remove tempdir on exit
trap 'cd ../..; rm -rf "$tempdir"' 0
ORIG_GIT_DIR="$GIT_DIR"
ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"
ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"
GIT_WORK_TREE=.
export GIT_DIR GIT_WORK_TREE
# Make sure refs/original is empty
git for-each-ref > "$tempdir"/backup-refs || exit
while read sha1 type name
......@@ -234,12 +240,6 @@ do
esac
done < "$tempdir"/backup-refs
ORIG_GIT_DIR="$GIT_DIR"
ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"
ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"
GIT_WORK_TREE=.
export GIT_DIR GIT_WORK_TREE
# The refs should be updated if their heads were rewritten
git rev-parse --no-flags --revs-only --symbolic-full-name \
--default HEAD "$@" > "$tempdir"/raw-heads || exit
......
......@@ -48,6 +48,18 @@ test_expect_success 'result is really identical' '
test $H = $(git rev-parse HEAD)
'
TRASHDIR=$(pwd)
test_expect_success 'correct GIT_DIR while using -d' '
mkdir drepo &&
( cd drepo &&
git init &&
test_commit drepo &&
git filter-branch -d "$TRASHDIR/dfoo" \
--index-filter "cp \"$TRASHDIR\"/dfoo/backup-refs \"$TRASHDIR\"" \
) &&
grep drepo "$TRASHDIR/backup-refs"
'
test_expect_success 'Fail if commit filter fails' '
test_must_fail git filter-branch -f --commit-filter "exit 1" HEAD
'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment