[PATCH 2/2] branch: warn and refuse to set a branch as a tracking branch of itself.
From: Ilari Liusvaara <hidden>
Date: 2016-06-15 22:48:03
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Matthieu Moy <redacted> Previous patch allows commands like "git branch foo foo --track", which doesn't make much sense. Warn the user and don't change the configuration in this case. Don't die to let the caller finish its job in such case. Signed-off-by: Matthieu Moy <redacted> Signed-off-by: Ilari Liusvaara <redacted> --- branch.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/branch.c b/branch.c
index 40d3c45..9e1f63e 100644
--- a/branch.c
+++ b/branch.c@@ -49,9 +49,19 @@ static int should_setup_rebase(const char *origin) void install_branch_config(int flag, const char *local, const char *origin, const char *remote) { + const char *shortname = remote + 11; + int remote_is_branch = !prefixcmp(remote, "refs/heads/"); struct strbuf key = STRBUF_INIT; int rebasing = should_setup_rebase(origin); + if (remote_is_branch + && !strcmp(local, shortname) + && !origin) { + warning("Not setting branch %s as its own upstream.", + local); + return; + } + strbuf_addf(&key, "branch.%s.remote", local); git_config_set(key.buf, origin ? origin : ".");
@@ -71,8 +81,8 @@ void install_branch_config(int flag, const char *local, const char *origin, cons strbuf_addstr(&key, origin ? "remote" : "local"); /* Are we tracking a proper "branch"? */ - if (!prefixcmp(remote, "refs/heads/")) { - strbuf_addf(&key, " branch %s", remote + 11); + if (remote_is_branch) { + strbuf_addf(&key, " branch %s", shortname); if (origin) strbuf_addf(&key, " from %s", origin); }
--
1.6.6.199.gff4b0