Re: Avoiding 'master' nomenclature

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Junio C Hamano <gitster@xxxxxxxxx> writes:

> The fast-export side lifted the "single branch is special"; we
> didn't do something similar for "fmt-merge-msg".
>
>> So I think a path forward is more like:
>>
>>   1. Add a new config option to shorten fmt-merge-msg's output when the
>>      destination branch matches it (and this should perhaps not even be
>>      a single name, but a set of globs, which supports more workflows).
>>      Call it merge.suppressDest or something.
>>
>>   2. Optionally a repository created with "git init" could copy its
>>      init.defaultBranch into merge.suppressDest. And likewise a clone
>>      might copy the remote HEAD into that variable. I'm not sure if that
>>      is worth doing or not, but it would restore the original behavior
>>      for the most part.
>
> Yeah, that sounds like a good plan.

A rough outline I did while waiting for today's integration builds
to finish looks like this, which does not look _too_ bad.  We can
replace the literal 'master' with the default branch name determined
at runtime, but I am not sure if that is needed.

 fmt-merge-msg.c | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/fmt-merge-msg.c b/fmt-merge-msg.c
index cfb8ff2f33..b99699eacc 100644
--- a/fmt-merge-msg.c
+++ b/fmt-merge-msg.c
@@ -10,6 +10,8 @@
 #include "commit-reach.h"
 
 static int use_branch_desc;
+static int suppress_dest_pattern_seen;
+static struct string_list suppress_dest_patterns = STRING_LIST_INIT_DUP;
 
 int fmt_merge_msg_config(const char *key, const char *value, void *cb)
 {
@@ -22,6 +24,12 @@ int fmt_merge_msg_config(const char *key, const char *value, void *cb)
 			merge_log_config = DEFAULT_MERGE_LOG_LEN;
 	} else if (!strcmp(key, "merge.branchdesc")) {
 		use_branch_desc = git_config_bool(key, value);
+	} else if (!strcmp(key, "merge.suppressdest")) {
+		if (!value)
+			string_list_clear(&suppress_dest_patterns, 0);
+		else
+			string_list_append(&suppress_dest_patterns, value);
+		suppress_dest_pattern_seen = 1;
 	} else {
 		return git_default_config(key, value, cb);
 	}
@@ -408,6 +416,8 @@ static void fmt_merge_msg_title(struct strbuf *out,
 {
 	int i = 0;
 	char *sep = "";
+	struct string_list_item *item;
+	int suppress_merge_dest = 0;
 
 	strbuf_addstr(out, "Merge ");
 	for (i = 0; i < srcs.nr; i++) {
@@ -451,7 +461,15 @@ static void fmt_merge_msg_title(struct strbuf *out,
 			strbuf_addf(out, " of %s", srcs.items[i].string);
 	}
 
-	strbuf_addf(out, " into %s\n", current_branch);
+	for_each_string_list_item(item, &suppress_dest_patterns) {
+		if (!wildmatch(item->string, current_branch, WM_PATHNAME)) {
+			suppress_merge_dest = 1;
+			break;
+		}
+	}
+
+	if (!suppress_merge_dest)
+		strbuf_addf(out, " into %s\n", current_branch);
 }
 
 static void fmt_tag_signature(struct strbuf *tagbuf,
@@ -596,6 +614,9 @@ int fmt_merge_msg(struct strbuf *in, struct strbuf *out,
 	void *current_branch_to_free;
 	struct merge_parents merge_parents;
 
+	if (!suppress_dest_pattern_seen)
+		string_list_append(&suppress_dest_patterns, "master");
+
 	memset(&merge_parents, 0, sizeof(merge_parents));
 
 	/* get current branch */



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux