From: Jay Soffian Date: Tue, 19 Feb 2008 02:19:43 GMT Subject: Re: [PATCH] branch: optionally setup branch.*.merge from upstream local branches Message-ID: <76718490802181819o4cf742edi92bbcd9039f0cdac@mail.gmail.com> In-Reply-To: <1203386832-43969-1-git-send-email-jaysoffian@gmail.com> On Feb 18, 2008 9:07 PM, Jay Soffian wrote: > diff --git a/branch.c b/branch.c > index 1fc8788..9d7585e 100644 > --- a/branch.c > +++ b/branch.c > @@ -37,7 +37,8 @@ static int find_tracked_branch(struct remote *remote, void *priv) > * to infer the settings for branch..{remote,merge} from the > * config. > */ > -static int setup_tracking(const char *new_ref, const char *orig_ref) > +static int setup_tracking(const char *new_ref, const char *orig_ref, > + enum branch_track track) > { > char key[1024]; > struct tracking tracking; > @@ -48,10 +49,14 @@ static int setup_tracking(const char *new_ref, const char *orig_ref) > > memset(&tracking, 0, sizeof(tracking)); > tracking.spec.dst = (char *)orig_ref; > - if (for_each_remote(find_tracked_branch, &tracking) || > - !tracking.matches) > + if (for_each_remote(find_tracked_branch, &tracking)) > return 1; > > + if (!tracking.matches && track == BRANCH_TRACK_ALWAYS) { > + tracking.matches = 1; > + tracking.src = xstrdup(orig_ref); > + } > + Well that's obviously wrong (though it causes no problems, setup_tracking() would return 0 when it should return 1, but its return value is currently ignored). I changed it to: if (!tracking.matches) { if (track != BRANCH_TRACK_ALWAYS) return 1; tracking.matches = 1; tracking.src = xstrdup(orig_ref); } j.