diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2007-07-04 15:36:01 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-07-05 22:16:28 -0700 |
commit | 8c1ce0f46b85d40f215084eed7313896300082df (patch) | |
tree | 6b53a8be6d9c755f0b64c00ad920b318f770412b /t | |
parent | 09ff69bb39b386e24a39723d9e20263a915bc6d6 (diff) | |
download | git-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')
-rwxr-xr-x | t/t7003-filter-branch.sh | 8 |
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) |