-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
builtin-blame: Reencode commit messages according to git-log rules.
Currently git-blame outputs text from the commit messages (e.g. the author name and the summary string) as-is, without even providing any information about the encoding used for the data. It makes interpreting the data in multilingual environment very difficult. This commit changes the blame implementation to recode the messages using the rules used by other commands like git-log. Namely, the target encoding can be specified through the i18n.commitEncoding or i18n.logOutputEncoding options, or directly on the command line using the --encoding parameter. Converting the encoding before output seems to be more friendly to the porcelain tools than simply providing the value of the encoding header, and does not require changing the output format. If anybody needs the old behavior, it is possible to achieve it by specifying --encoding=none. Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Alexander Gavrilov
authored and
Junio C Hamano
committed
Oct 21, 2008
1 parent
208f689
commit 69cd8f6
Showing
9 changed files
with
136 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
#!/bin/sh | ||
|
||
test_description='git blame encoding conversion' | ||
. ./test-lib.sh | ||
|
||
. "$TEST_DIRECTORY"/t8005/utf8.txt | ||
. "$TEST_DIRECTORY"/t8005/cp1251.txt | ||
. "$TEST_DIRECTORY"/t8005/sjis.txt | ||
|
||
test_expect_success 'setup the repository' ' | ||
# Create the file | ||
echo "UTF-8 LINE" > file && | ||
git add file && | ||
git commit --author "$UTF8_NAME <utf8@localhost>" -m "$UTF8_MSG" && | ||
echo "CP1251 LINE" >> file && | ||
git add file && | ||
git config i18n.commitencoding cp1251 && | ||
git commit --author "$CP1251_NAME <cp1251@localhost>" -m "$CP1251_MSG" && | ||
echo "SJIS LINE" >> file && | ||
git add file && | ||
git config i18n.commitencoding shift-jis && | ||
git commit --author "$SJIS_NAME <sjis@localhost>" -m "$SJIS_MSG" | ||
' | ||
|
||
cat >expected <<EOF | ||
author $SJIS_NAME | ||
summary $SJIS_MSG | ||
author $SJIS_NAME | ||
summary $SJIS_MSG | ||
author $SJIS_NAME | ||
summary $SJIS_MSG | ||
EOF | ||
|
||
test_expect_success \ | ||
'blame respects i18n.commitencoding' ' | ||
git blame --incremental file | \ | ||
grep "^\(author\|summary\) " > actual && | ||
test_cmp actual expected | ||
' | ||
|
||
cat >expected <<EOF | ||
author $CP1251_NAME | ||
summary $CP1251_MSG | ||
author $CP1251_NAME | ||
summary $CP1251_MSG | ||
author $CP1251_NAME | ||
summary $CP1251_MSG | ||
EOF | ||
|
||
test_expect_success \ | ||
'blame respects i18n.logoutputencoding' ' | ||
git config i18n.logoutputencoding cp1251 && | ||
git blame --incremental file | \ | ||
grep "^\(author\|summary\) " > actual && | ||
test_cmp actual expected | ||
' | ||
|
||
cat >expected <<EOF | ||
author $UTF8_NAME | ||
summary $UTF8_MSG | ||
author $UTF8_NAME | ||
summary $UTF8_MSG | ||
author $UTF8_NAME | ||
summary $UTF8_MSG | ||
EOF | ||
|
||
test_expect_success \ | ||
'blame respects --encoding=utf-8' ' | ||
git blame --incremental --encoding=utf-8 file | \ | ||
grep "^\(author\|summary\) " > actual && | ||
test_cmp actual expected | ||
' | ||
|
||
cat >expected <<EOF | ||
author $SJIS_NAME | ||
summary $SJIS_MSG | ||
author $CP1251_NAME | ||
summary $CP1251_MSG | ||
author $UTF8_NAME | ||
summary $UTF8_MSG | ||
EOF | ||
|
||
test_expect_success \ | ||
'blame respects --encoding=none' ' | ||
git blame --incremental --encoding=none file | \ | ||
grep "^\(author\|summary\) " > actual && | ||
test_cmp actual expected | ||
' | ||
|
||
test_done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
CP1251_NAME="���� �������� �������" | ||
CP1251_MSG="�������� ���������" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
SJIS_NAME="�I�r�p�~ �P�u�������r�y�� �R�y�t�������r" | ||
SJIS_MSG="�S�u�������r���u �������q���u�~�y�u" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
UTF8_NAME="Иван Петрович Сидоров" | ||
UTF8_MSG="Тестовое сообщение" |