diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-02-07 11:09:48 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-02-07 11:09:48 -0800 |
commit | df4364a42981dec067dbacfd6371d4ca910df48e (patch) | |
tree | 862033510a057a827ee2e918f83ea0f438db876f | |
parent | 7de265a4cfd2c6dbe1c7af8c592a23ede08ec854 (diff) | |
parent | 26be15f09db15d2b53a13d0f184d77fb54367f33 (diff) | |
download | git-df4364a42981dec067dbacfd6371d4ca910df48e.tar.gz git-df4364a42981dec067dbacfd6371d4ca910df48e.tar.xz |
Merge branch 'js/filter-branch-submodule'
* js/filter-branch-submodule:
filter-branch: do not consider diverging submodules a 'dirty worktree'
filter-branch: Fix fatal error on bare repositories
-rwxr-xr-x | git-filter-branch.sh | 27 | ||||
-rwxr-xr-x | t/t7003-filter-branch.sh | 4 |
2 files changed, 17 insertions, 14 deletions
diff --git a/git-filter-branch.sh b/git-filter-branch.sh index eb62f719b..86eef5629 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -108,7 +108,7 @@ OPTIONS_SPEC= . git-sh-setup if [ "$(is_bare_repository)" = false ]; then - git diff-files --quiet && + git diff-files --ignore-submodules --quiet && git diff-index --cached --quiet HEAD -- || die "Cannot rewrite branch(es) with a dirty working directory." fi @@ -469,19 +469,20 @@ rm -rf "$tempdir" trap - 0 +unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE +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" && + export GIT_WORK_TREE +} +test -z "$ORIG_GIT_INDEX_FILE" || { + GIT_INDEX_FILE="$ORIG_GIT_INDEX_FILE" && + export GIT_INDEX_FILE +} + if [ "$(is_bare_repository)" = false ]; then - unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE - 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" && - export GIT_WORK_TREE - } - test -z "$ORIG_GIT_INDEX_FILE" || { - GIT_INDEX_FILE="$ORIG_GIT_INDEX_FILE" && - export GIT_INDEX_FILE - } git read-tree -u -m HEAD fi diff --git a/t/t7003-filter-branch.sh b/t/t7003-filter-branch.sh index 8537bf916..cb0474336 100755 --- a/t/t7003-filter-branch.sh +++ b/t/t7003-filter-branch.sh @@ -39,7 +39,9 @@ test_expect_success 'result is really identical' ' ' test_expect_success 'rewrite bare repository identically' ' - (git config core.bare true && cd .git && git filter-branch branch) + (git config core.bare true && cd .git && + git filter-branch branch > filter-output 2>&1 && + ! fgrep fatal filter-output) ' git config core.bare false test_expect_success 'result is really identical' ' |