summaryrefslogtreecommitdiff
path: root/builtin-log.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-12-25 19:48:35 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-12-26 08:52:13 (GMT)
commit52883fbd767f8a79a6f98a08907d0a9f6ba1ece1 (patch)
tree7b148784dc3ffe306d2a9bfbd823c7414e0327b9 /builtin-log.c
parent4b2bced55948422198dad92dcbf4b5b98913f1e7 (diff)
downloadgit-52883fbd767f8a79a6f98a08907d0a9f6ba1ece1.zip
git-52883fbd767f8a79a6f98a08907d0a9f6ba1ece1.tar.gz
git-52883fbd767f8a79a6f98a08907d0a9f6ba1ece1.tar.bz2
Teach log family --encoding
Updated commit objects record the encoding used in their encoding header. This updates the log family to reencode it into the encoding specified in i18n.commitencoding (or the default, which is "utf-8") upon output. To force a specific encoding that is different, log family takes command line flag --encoding=<encoding>; giving --encoding=none entirely disables the reencoding and lets you view log messges in their original encoding. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'builtin-log.c')
-rw-r--r--builtin-log.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/builtin-log.c b/builtin-log.c
index 8df3c13..b7e47cb 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -20,6 +20,8 @@ void add_head(struct rev_info *revs);
static void cmd_log_init(int argc, const char **argv, const char *prefix,
struct rev_info *rev)
{
+ int i;
+
rev->abbrev = DEFAULT_ABBREV;
rev->commit_format = CMIT_FMT_DEFAULT;
rev->verbose_header = 1;
@@ -27,8 +29,21 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
argc = setup_revisions(argc, argv, rev, "HEAD");
if (rev->diffopt.pickaxe || rev->diffopt.filter)
rev->always_show_header = 0;
- if (argc > 1)
- die("unrecognized argument: %s", argv[1]);
+ for (i = 1; i < argc; i++) {
+ const char *arg = argv[i];
+ if (!strncmp(arg, "--encoding=", 11)) {
+ arg += 11;
+ if (MAX_ENCODING_LENGTH <= strlen(arg))
+ die(" Value of output encoding '%s' too long",
+ arg);
+ if (strcmp(arg, "none"))
+ strcpy(git_commit_encoding, arg);
+ else
+ git_commit_encoding[0] = 0;
+ }
+ else
+ die("unrecognized argument: %s", arg);
+ }
}
static int cmd_log_walk(struct rev_info *rev)