mirror of
https://github.com/git/git.git
synced 2024-11-23 18:05:29 +08:00
Merge branch 'uk/maint-shortlog-encoding'
Conflicts: builtin-shortlog.c
This commit is contained in:
commit
a689faeb58
@ -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;
|
||||
struct pretty_print_context ctx = {0};
|
||||
|
||||
buffer = commit->buffer;
|
||||
pretty_print_commit(CMIT_FMT_RAW, commit, &buf, &ctx);
|
||||
buffer = buf.buf;
|
||||
while (*buffer && *buffer != '\n') {
|
||||
const char *eol = strchr(buffer, '\n');
|
||||
|
||||
@ -157,20 +161,19 @@ 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;
|
||||
struct pretty_print_context ctx = {0};
|
||||
ctx.abbrev = DEFAULT_ABBREV;
|
||||
ctx.subject = "";
|
||||
ctx.after_subject = "";
|
||||
ctx.date_mode = DATE_NORMAL;
|
||||
pretty_print_commit(CMIT_FMT_USERFORMAT, commit, &buf, &ctx);
|
||||
insert_one_record(log, author, buf.buf);
|
||||
strbuf_release(&buf);
|
||||
return;
|
||||
}
|
||||
if (*buffer)
|
||||
pretty_print_commit(CMIT_FMT_USERFORMAT, commit, &ufbuf, &ctx);
|
||||
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 ISO-8859-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 "ISO-8859-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
|
||||
|
Loading…
Reference in New Issue
Block a user