Johan Herland <johan@xxxxxxxxxxx> writes: > When creating a new branch using the --track option, we must make sure that > we don't try to set an upstream that does not make sense to follow (using > 'git pull') or update (using 'git push'). The current code checks against > using HEAD as upstream (since tracking a symref doesn't make sense). However, > tracking a tag doesn't make sense either. Indeed, tracking _any_ ref that is > not a (local or remote) branch doesn't make sense, and should be disallowed. > > This patch achieves this by checking that the ref we're trying to --track > resides within refs/heads/* or refs/remotes/*. This new check replaces the > previous check against HEAD. > ... > Make it so. > > diff --git a/branch.c b/branch.c > index 93dc866..f46a43a 100644 > --- a/branch.c > +++ b/branch.c > @@ -175,8 +175,10 @@ void create_branch(const char *head, > die("Cannot setup tracking information; starting point is not a branch."); > break; > case 1: > - /* Unique completion -- good, only if it is a real ref */ > - if (explicit_tracking && !strcmp(real_ref, "HEAD")) > + /* Unique completion -- good, only if it is a real branch */ > + if (explicit_tracking && > + prefixcmp(real_ref, "refs/heads/") && > + prefixcmp(real_ref, "refs/remotes/")) > die("Cannot setup tracking information; starting point is not a branch."); > break; > default: Thomas's "HEAD" patch 84c1a89 (branch: do not attempt to track HEAD implicitly, 2010-12-14) has an extra action to reset real_ref to NULL when not asking for "explicit_tracking" in the same codepath. <<<<<<< HEAD /* Unique completion -- good, only if it is a real ref */ if (!strcmp(real_ref, "HEAD")) { if (explicit_tracking) die("Cannot setup tracking information; starting point is not a branch."); else real_ref = NULL; } ======= /* Unique completion -- good, only if it is a real branch */ if (explicit_tracking && prefixcmp(real_ref, "refs/heads/") && prefixcmp(real_ref, "refs/remotes/")) die("Cannot setup tracking information; starting point is not a branch."); >>>>>>> @{-1} Don't we need something similar here? -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html