Skip to content

Commit

Permalink
branch: warn and refuse to set a branch as a tracking branch of itself.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Matthieu Moy authored and Junio C Hamano committed Jan 19, 2010
1 parent 4fc5006 commit 85e2233
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions branch.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 : ".");

Expand All @@ -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);
}
Expand Down

0 comments on commit 85e2233

Please sign in to comment.