Change from v5: - claim t3434 instead of t3433 Doan Tran Cong Danh (9): t0028: eliminate non-standard usage of printf configure.ac: define ICONV_OMITS_BOM if necessary t3900: demonstrate git-rebase problem with multi encoding sequencer: reencode to utf-8 before arrange rebase's todo list sequencer: reencode revert/cherry-pick's todo list sequencer: reencode squashing commit's message sequencer: reencode old merge-commit message sequencer: reencode commit message for am/rebase --show-current-patch sequencer: fallback to sane label in making rebase todo list configure.ac | 49 ++++++++++++++++++ sequencer.c | 32 ++++++++---- t/t0028-working-tree-encoding.sh | 4 +- t/t3434-rebase-i18n.sh | 84 +++++++++++++++++++++++++++++++ t/t3434/ISO8859-1.txt | Bin 0 -> 15 bytes t/t3434/eucJP.txt | Bin 0 -> 68 bytes t/t3900-i18n-commit.sh | 37 ++++++++++++++ 7 files changed, 195 insertions(+), 11 deletions(-) create mode 100755 t/t3434-rebase-i18n.sh create mode 100644 t/t3434/ISO8859-1.txt create mode 100644 t/t3434/eucJP.txt Range-diff against v5: 1: b3d6c4e720 = 1: 9f83d4533b t0028: eliminate non-standard usage of printf 2: fe63a6bc44 = 2: a9adb3d061 configure.ac: define ICONV_OMITS_BOM if necessary 3: 30f15075c4 = 3: c41046e717 t3900: demonstrate git-rebase problem with multi encoding 4: 17165b81e5 = 4: 0ab92e7999 sequencer: reencode to utf-8 before arrange rebase's todo list 5: 40fa759492 = 5: 23f9de4527 sequencer: reencode revert/cherry-pick's todo list 6: ed6cfab5d2 = 6: f04a9d1698 sequencer: reencode squashing commit's message 7: def9adf97e ! 7: 4dfdd4b83e sequencer: reencode old merge-commit message @@ sequencer.c: static int do_merge(struct repository *r, int len; - ## t/t3433-rebase-i18n.sh (new) ## + ## t/t3434-rebase-i18n.sh (new) ## @@ +#!/bin/sh +# @@ t/t3433-rebase-i18n.sh (new) +. ./test-lib.sh + +compare_msg () { -+ iconv -f "$2" -t "$3" "$TEST_DIRECTORY/t3433/$1" >expect && ++ iconv -f "$2" -t "$3" "$TEST_DIRECTORY/t3434/$1" >expect && + git cat-file commit HEAD >raw && + sed "1,/^$/d" raw >actual && + test_cmp expect actual @@ t/t3433-rebase-i18n.sh (new) +test_expect_success 'rebase --rebase-merges update encoding eucJP to UTF-8' ' + git switch -c merge-eucJP-UTF-8 first && + git config i18n.commitencoding eucJP && -+ git merge -F "$TEST_DIRECTORY/t3433/eucJP.txt" second && ++ git merge -F "$TEST_DIRECTORY/t3434/eucJP.txt" second && + git config i18n.commitencoding UTF-8 && + git rebase --rebase-merges master && + compare_msg eucJP.txt eucJP UTF-8 @@ t/t3433-rebase-i18n.sh (new) +test_expect_failure 'rebase --rebase-merges update encoding eucJP to ISO-2022-JP' ' + git switch -c merge-eucJP-ISO-2022-JP first && + git config i18n.commitencoding eucJP && -+ git merge -F "$TEST_DIRECTORY/t3433/eucJP.txt" second && ++ git merge -F "$TEST_DIRECTORY/t3434/eucJP.txt" second && + git config i18n.commitencoding ISO-2022-JP && + git rebase --rebase-merges master && + compare_msg eucJP.txt eucJP ISO-2022-JP @@ t/t3433-rebase-i18n.sh (new) + +test_done - ## t/t3433/eucJP.txt (new) ## - Binary files /dev/null and t/t3433/eucJP.txt differ + ## t/t3434/eucJP.txt (new) ## + Binary files /dev/null and t/t3434/eucJP.txt differ 8: 2e95ca57d2 ! 8: 28e82d6394 sequencer: reencode commit message for am/rebase --show-current-patch @@ sequencer.c: static int make_patch(struct repository *r, res |= write_message(subject, strlen(subject), buf.buf, 1); unuse_commit_buffer(commit, commit_buffer); - ## t/t3433-rebase-i18n.sh ## -@@ t/t3433-rebase-i18n.sh: test_expect_failure 'rebase --rebase-merges update encoding eucJP to ISO-2022-JP + ## t/t3434-rebase-i18n.sh ## +@@ t/t3434-rebase-i18n.sh: test_expect_failure 'rebase --rebase-merges update encoding eucJP to ISO-2022-JP compare_msg eucJP.txt eucJP ISO-2022-JP ' @@ t/t3433-rebase-i18n.sh: test_expect_failure 'rebase --rebase-merges update encod + echo for-conflict >two.t && + git add two.t && + git config i18n.commitencoding $old && -+ git commit -F "$TEST_DIRECTORY/t3433/$msgfile" && ++ git commit -F "$TEST_DIRECTORY/t3434/$msgfile" && + git config i18n.commitencoding $new && + test_must_fail git rebase -m master && + test -f .git/rebase-merge/message && @@ t/t3433-rebase-i18n.sh: test_expect_failure 'rebase --rebase-merges update encod + test_done - ## t/t3433/ISO8859-1.txt (new) ## - Binary files /dev/null and t/t3433/ISO8859-1.txt differ + ## t/t3434/ISO8859-1.txt (new) ## + Binary files /dev/null and t/t3434/ISO8859-1.txt differ 9: 860dee65f4 ! 9: 78daf050de sequencer: fallback to sane label in making rebase todo list @@ sequencer.c: static int make_script_with_merges(struct pretty_print_context *pp, /* label the tips of merged branches */ for (; to_merge; to_merge = to_merge->next) { - ## t/t3433-rebase-i18n.sh ## -@@ t/t3433-rebase-i18n.sh: test_expect_success 'rebase --rebase-merges update encoding eucJP to UTF-8' ' + ## t/t3434-rebase-i18n.sh ## +@@ t/t3434-rebase-i18n.sh: test_expect_success 'rebase --rebase-merges update encoding eucJP to UTF-8' ' compare_msg eucJP.txt eucJP UTF-8 ' @@ t/t3433-rebase-i18n.sh: test_expect_success 'rebase --rebase-merges update encod +test_expect_success 'rebase --rebase-merges update encoding eucJP to ISO-2022-JP' ' git switch -c merge-eucJP-ISO-2022-JP first && git config i18n.commitencoding eucJP && - git merge -F "$TEST_DIRECTORY/t3433/eucJP.txt" second && + git merge -F "$TEST_DIRECTORY/t3434/eucJP.txt" second && -- 2.24.0.164.g78daf050de.dirty