aboutsummaryrefslogtreecommitdiff
path: root/branch.c
diff options
context:
space:
mode:
authorMatthieu Moy <Matthieu.Moy@imag.fr>2010-01-18 22:44:12 +0200
committerJunio C Hamano <gitster@pobox.com>2010-01-18 17:46:28 -0800
commit85e2233f982f760d0e731b1258da2580834d8027 (patch)
treec15768a5e545300805a05eef92d75ae75c264386 /branch.c
parent4fc500667636c4ada592a40c4d11ce0560c43c0d (diff)
downloadgit-85e2233f982f760d0e731b1258da2580834d8027.tar.gz
git-85e2233f982f760d0e731b1258da2580834d8027.tar.xz
branch: warn and refuse to set a branch as a tracking branch of itself.
Previous patch allows commands like "git branch --set-upstream foo foo", 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 <Matthieu.Moy@imag.fr> Signed-off-by: Ilari Liusvaara <ilari.liusvaara@elisanet.fi> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'branch.c')
-rw-r--r--branch.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/branch.c b/branch.c
index 40d3c4574..9e1f63ed8 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);
}