1
0
mirror of https://github.com/git/git.git synced 2024-09-26 02:11:45 +02:00

git-filter-branch.sh: Allow running in bare repositories

Commit 46eb449c restricted git-filter-branch to non-bare repositories
unnecessarily; git-filter-branch can work on bare repositories just
fine.

Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Petr Baudis 2008-07-24 00:15:36 +02:00 committed by Junio C Hamano
parent 68067ca1ef
commit a4661b018d
2 changed files with 26 additions and 14 deletions

View File

@ -97,9 +97,11 @@ USAGE="[--env-filter <command>] [--tree-filter <command>] \
OPTIONS_SPEC= OPTIONS_SPEC=
. git-sh-setup . git-sh-setup
git diff-files --quiet && if [ "$(is_bare_repository)" = false ]; then
git diff-files --quiet &&
git diff-index --cached --quiet HEAD -- || git diff-index --cached --quiet HEAD -- ||
die "Cannot rewrite branch(es) with a dirty working directory." die "Cannot rewrite branch(es) with a dirty working directory."
fi
tempdir=.git-rewrite tempdir=.git-rewrite
filter_env= filter_env=
@ -434,18 +436,20 @@ rm -rf "$tempdir"
trap - 0 trap - 0
unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE if [ "$(is_bare_repository)" = false ]; then
test -z "$ORIG_GIT_DIR" || { unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE
GIT_DIR="$ORIG_GIT_DIR" && export GIT_DIR test -z "$ORIG_GIT_DIR" || {
} GIT_DIR="$ORIG_GIT_DIR" && export GIT_DIR
test -z "$ORIG_GIT_WORK_TREE" || { }
GIT_WORK_TREE="$ORIG_GIT_WORK_TREE" && test -z "$ORIG_GIT_WORK_TREE" || {
export GIT_WORK_TREE GIT_WORK_TREE="$ORIG_GIT_WORK_TREE" &&
} export GIT_WORK_TREE
test -z "$ORIG_GIT_INDEX_FILE" || { }
GIT_INDEX_FILE="$ORIG_GIT_INDEX_FILE" && test -z "$ORIG_GIT_INDEX_FILE" || {
export GIT_INDEX_FILE GIT_INDEX_FILE="$ORIG_GIT_INDEX_FILE" &&
} export GIT_INDEX_FILE
git read-tree -u -m HEAD }
git read-tree -u -m HEAD
fi
exit $ret exit $ret

View File

@ -38,6 +38,14 @@ test_expect_success 'result is really identical' '
test $H = $(git rev-parse HEAD) test $H = $(git rev-parse HEAD)
' '
test_expect_success 'rewrite bare repository identically' '
(git config core.bare true && cd .git && git-filter-branch branch)
'
git config core.bare false
test_expect_success 'result is really identical' '
test $H = $(git rev-parse HEAD)
'
test_expect_success 'rewrite, renaming a specific file' ' test_expect_success 'rewrite, renaming a specific file' '
git-filter-branch -f --tree-filter "mv d doh || :" HEAD git-filter-branch -f --tree-filter "mv d doh || :" HEAD
' '