#!/bin/sh # # Copyright (c) 2019 Doan Tran Cong Danh # test_description='rebase with changing encoding Initial setup: 1 - 2 master \ 3 - 4 first \ 5 - 6 second ' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh compare_msg () { 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 } test_expect_success setup ' test_commit one && git branch first && test_commit two && git switch first && test_commit three && git branch second && test_commit four && git switch second && test_commit five && test_commit six ' 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/t3434/eucJP.txt" second && git config i18n.commitencoding UTF-8 && git rebase --rebase-merges master && compare_msg eucJP.txt eucJP UTF-8 ' 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/t3434/eucJP.txt" second && git config i18n.commitencoding ISO-2022-JP && git rebase --rebase-merges master && compare_msg eucJP.txt eucJP ISO-2022-JP ' test_rebase_continue_update_encode () { old=$1 new=$2 msgfile=$3 test_expect_success "rebase --continue update from $old to $new" ' (git rebase --abort || : abort current git-rebase failure) && git switch -c conflict-$old-$new one && echo for-conflict >two.t && git add two.t && git config i18n.commitencoding $old && 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 && git stripspace <.git/rebase-merge/message >two.t && git add two.t && git rebase --continue && compare_msg $msgfile $old $new && : git-commit assume invalid utf-8 is latin1 && test_cmp expect two.t ' } test_rebase_continue_update_encode ISO-8859-1 UTF-8 ISO8859-1.txt test_rebase_continue_update_encode eucJP UTF-8 eucJP.txt test_rebase_continue_update_encode eucJP ISO-2022-JP eucJP.txt test_done