diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 5777947a5d..27c9c54fbd 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -377,7 +377,7 @@ while read commit parents; do fi { - while read -r header_line && test -n "$header_line" + while IFS='' read -r header_line && test -n "$header_line" do # skip header lines... :; diff --git a/t/t7003-filter-branch.sh b/t/t7003-filter-branch.sh index 855afda80a..377c648e04 100755 --- a/t/t7003-filter-branch.sh +++ b/t/t7003-filter-branch.sh @@ -2,6 +2,7 @@ test_description='git filter-branch' . ./test-lib.sh +. "$TEST_DIRECTORY/lib-gpg.sh" test_expect_success 'setup' ' test_commit A && @@ -292,6 +293,19 @@ test_expect_success 'Tag name filtering strips gpg signature' ' test_cmp expect actual ' +test_expect_success GPG 'Filtering retains message of gpg signed commit' ' + mkdir gpg && + touch gpg/foo && + git add gpg && + test_tick && + git commit -S -m "Adding gpg" && + + git log -1 --format="%s" > expect && + git filter-branch -f --msg-filter "cat" && + git log -1 --format="%s" > actual && + test_cmp expect actual +' + test_expect_success 'Tag name filtering allows slashes in tag names' ' git tag -m tag-with-slash X/1 && git cat-file tag X/1 | sed -e s,X/1,X/2, > expect &&