Merge branch 'uk/maint-shortlog-encoding' into maint

* uk/maint-shortlog-encoding:
  t4201: use ISO8859-1 rather than ISO-8859-1
  shortlog: respect commit encoding
This commit is contained in:
Junio C Hamano 2009-12-03 13:56:50 -08:00
Родитель c8b1d761f6 3994e8a98d
Коммит dda8f4bf2b
2 изменённых файлов: 39 добавлений и 9 удалений

Просмотреть файл

@ -139,8 +139,12 @@ static void read_from_stdin(struct shortlog *log)
void shortlog_add_commit(struct shortlog *log, struct commit *commit)
{
const char *author = NULL, *buffer;
struct strbuf buf = STRBUF_INIT;
struct strbuf ufbuf = STRBUF_INIT;
buffer = commit->buffer;
pretty_print_commit(CMIT_FMT_RAW, commit, &buf,
0, NULL, NULL, DATE_NORMAL, 0);
buffer = buf.buf;
while (*buffer && *buffer != '\n') {
const char *eol = strchr(buffer, '\n');
@ -157,17 +161,15 @@ void shortlog_add_commit(struct shortlog *log, struct commit *commit)
die("Missing author: %s",
sha1_to_hex(commit->object.sha1));
if (log->user_format) {
struct strbuf buf = STRBUF_INIT;
pretty_print_commit(CMIT_FMT_USERFORMAT, commit, &buf,
pretty_print_commit(CMIT_FMT_USERFORMAT, commit, &ufbuf,
DEFAULT_ABBREV, "", "", DATE_NORMAL, 0);
insert_one_record(log, author, buf.buf);
strbuf_release(&buf);
return;
}
if (*buffer)
buffer = ufbuf.buf;
} else if (*buffer) {
buffer++;
}
insert_one_record(log, author, !*buffer ? "<none>" : buffer);
strbuf_release(&ufbuf);
strbuf_release(&buf);
}
static void get_from_rev(struct rev_info *rev, struct shortlog *log)

Просмотреть файл

@ -52,4 +52,32 @@ GIT_DIR=non-existing git shortlog -w < log > out
test_expect_success 'shortlog from non-git directory' 'test_cmp expect out'
iconvfromutf8toiso88591() {
printf "%s" "$*" | iconv -f UTF-8 -t ISO8859-1
}
DSCHO="Jöhännës \"Dschö\" Schindëlin"
DSCHOE="$DSCHO <Johannes.Schindelin@gmx.de>"
MSG1="set a1 to 2 and some non-ASCII chars: Äßø"
MSG2="set a1 to 3 and some non-ASCII chars: áæï"
cat > expect << EOF
$DSCHO (2):
$MSG1
$MSG2
EOF
test_expect_success 'shortlog encoding' '
git reset --hard "$commit" &&
git config --unset i18n.commitencoding &&
echo 2 > a1 &&
git commit --quiet -m "$MSG1" --author="$DSCHOE" a1 &&
git config i18n.commitencoding "ISO8859-1" &&
echo 3 > a1 &&
git commit --quiet -m "$(iconvfromutf8toiso88591 "$MSG2")" \
--author="$(iconvfromutf8toiso88591 "$DSCHOE")" a1 &&
git config --unset i18n.commitencoding &&
git shortlog HEAD~2.. > out &&
test_cmp expect out'
test_done