aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-02-07 11:09:48 -0800
committerJunio C Hamano <gitster@pobox.com>2009-02-07 11:09:48 -0800
commitdf4364a42981dec067dbacfd6371d4ca910df48e (patch)
tree862033510a057a827ee2e918f83ea0f438db876f
parent7de265a4cfd2c6dbe1c7af8c592a23ede08ec854 (diff)
parent26be15f09db15d2b53a13d0f184d77fb54367f33 (diff)
downloadgit-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-xgit-filter-branch.sh27
-rwxr-xr-xt/t7003-filter-branch.sh4
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' '