Re: [PATCH 12/13] Build in merge
From: Miklos Vajna <hidden>
Date: 2016-06-15 22:44:50
Subsystem:
the rest · Maintainer:
Linus Torvalds
On Wed, Jun 25, 2008 at 06:22:45PM +0200, Olivier Marin [off-list ref] wrote:
quoted
+ if (new_head && show_diffstat) { + diff_setup(&opts); + opts.output_format |= + DIFF_FORMAT_SUMMARY | DIFF_FORMAT_DIFFSTAT; + opts.detect_rename = DIFF_DETECT_RENAME;You probably want to add DIFF_OPT_SET(&opts, COLOR_DIFF) to have a nice colored diff like the original script.
That would always turn colors on. This should respect diff.color:
diff --git a/builtin-merge.c b/builtin-merge.c
index 66189d2..c2a32ee 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c@@ -331,6 +331,8 @@ static void finish(const unsigned char *new_head, const char *msg) opts.output_format |= DIFF_FORMAT_SUMMARY | DIFF_FORMAT_DIFFSTAT; opts.detect_rename = DIFF_DETECT_RENAME; + if (diff_use_color_default > 0) + DIFF_OPT_SET(&opts, COLOR_DIFF); diff_tree_sha1(head, new_head, "", &opts); diffcore_std(&opts); diff_flush(&opts);
@@ -693,6 +695,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix) } git_config(git_merge_config, NULL); + git_config(git_diff_ui_config, NULL); argc = parse_options(argc, argv, builtin_merge_options, builtin_merge_usage, 0);
quoted
+int cmd_merge(int argc, const char **argv, const char *prefix) +{[...]quoted
+ } else if (allow_fast_forward && !remoteheads->next && + !hashcmp(common->item->object.sha1, head)) { + /* Again the most common case of merging one remote. */ + struct strbuf msg; + struct object *o; + + printf("Updating %s..%s\n", + find_unique_abbrev(head, DEFAULT_ABBREV), + find_unique_abbrev(remoteheads->item->object.sha1, + DEFAULT_ABBREV));Here, the second call to find_unique_abbrev() will overwrite the previous returned value because this function return a pointer to a static buffer.
This should fix it:
diff --git a/builtin-merge.c b/builtin-merge.c
index cc04d01..77de9e8 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c@@ -836,9 +836,12 @@ int cmd_merge(int argc, const char **argv, const char *prefix) /* Again the most common case of merging one remote. */ struct strbuf msg; struct object *o; + char hex[41]; + + memcpy(hex, find_unique_abbrev(head, DEFAULT_ABBREV), 41); printf("Updating %s..%s\n", - find_unique_abbrev(head, DEFAULT_ABBREV), + hex, find_unique_abbrev(remoteheads->item->object.sha1, DEFAULT_ABBREV)); refresh_cache(REFRESH_QUIET);
I pushed both to my working branch and I'll send proper patches to this list among with other small changes soon. Thanks!
Attachments
- (unnamed) [application/pgp-signature] 197 bytes