Merge branch 'jk/filter-branch-use-of-sed-on-incomplete-line'
authorJunio C Hamano <gitster@pobox.com>
Fri, 16 Oct 2015 21:42:47 +0000 (14:42 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 16 Oct 2015 21:42:47 +0000 (14:42 -0700)
A recent "filter-branch --msg-filter" broke skipping of the commit
object header, which is fixed.

* jk/filter-branch-use-of-sed-on-incomplete-line:
filter-branch: remove multi-line headers in msg filter

git-filter-branch.sh
t/t7003-filter-branch.sh
index 5777947a5d6c0fadc2e91a809b4ce850cb152b24..27c9c54fbd24ef3a2995fd90b04911e5a1d8aed9 100755 (executable)
@@ -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...
                        :;
index 855afda80a1b0dea6d74aa18a96018f59cb2e50b..377c648e04f55359eefa87cdf2ad0c06be0df171 100755 (executable)
@@ -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 &&