[PATCH v6 0/9] sequencer: handle other encoding better
From: Doan Tran Cong Danh <hidden>
Date: 2019-11-11 06:04:09
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