aboutsummaryrefslogtreecommitdiff
path: root/t/t7003-filter-branch.sh
diff options
context:
space:
mode:
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>2007-07-04 15:36:01 +0100
committerJunio C Hamano <gitster@pobox.com>2007-07-05 22:16:28 -0700
commit8c1ce0f46b85d40f215084eed7313896300082df (patch)
tree6b53a8be6d9c755f0b64c00ad920b318f770412b /t/t7003-filter-branch.sh
parent09ff69bb39b386e24a39723d9e20263a915bc6d6 (diff)
downloadgit-8c1ce0f46b85d40f215084eed7313896300082df.tar.gz
git-8c1ce0f46b85d40f215084eed7313896300082df.tar.xz
filter-branch: fail gracefully when a filter fails
A common mistake is to provide a filter which fails unwantedly. For example, this will stop in the middle: git filter-branch --env-filter ' test $GIT_COMMITTER_EMAIL = xyz && export GIT_COMMITTER_EMAIL = abc' rewritten When $GIT_COMMITTER_EMAIL is not "xyz", the test fails, and consequently the whole filter has a non-zero exit status. However, as demonstrated in this example, filter-branch would just stop, and the user would be none the wiser. Also, a failing msg-filter would not have been caught, as was the case with one of the tests. This patch fixes both issues, by paying attention to the exit status of msg-filter, and by saying what failed before exiting. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t7003-filter-branch.sh')
-rwxr-xr-xt/t7003-filter-branch.sh8
1 files changed, 7 insertions, 1 deletions
diff --git a/t/t7003-filter-branch.sh b/t/t7003-filter-branch.sh
index 451ac861a..4ddd656e8 100755
--- a/t/t7003-filter-branch.sh
+++ b/t/t7003-filter-branch.sh
@@ -107,13 +107,19 @@ test_expect_success 'use index-filter to move into a subdirectory' '
mv \$GIT_INDEX_FILE.new \$GIT_INDEX_FILE" directorymoved &&
test -z "$(git diff HEAD directorymoved:newsubdir)"'
+test_expect_success 'stops when msg filter fails' '
+ ! git-filter-branch --msg-filter false nonono &&
+ rm -rf .git-rewrite &&
+ ! git rev-parse nonono
+'
+
test_expect_success 'author information is preserved' '
: > i &&
git add i &&
test_tick &&
GIT_AUTHOR_NAME="B V Uips" git commit -m bvuips &&
git-filter-branch --msg-filter "cat; \
- test \$GIT_COMMIT = $(git rev-parse master) && \
+ test \$GIT_COMMIT != $(git rev-parse master) || \
echo Hallo" \
preserved-author &&
test 1 = $(git rev-list --author="B V Uips" preserved-author | wc -l)