On 2021.10.18 10:50, Glen Choo wrote: > Josh Steadmon <steadmon@xxxxxxxxxx> writes: > > > +static int inherit_tracking(struct tracking *tracking, const char *orig_ref) > > +{ > > + struct strbuf key = STRBUF_INIT; > > + char *remote; > > + const char *bare_ref; > > + > > + bare_ref = orig_ref; > > + skip_prefix(orig_ref, "refs/heads/", &bare_ref); > > + > > + strbuf_addf(&key, "branch.%s.remote", bare_ref); > > + if (git_config_get_string(key.buf, &remote)) { > > + warning("branch.autoSetupMerge=inherit, but could not find %s", > > + key.buf); > > + strbuf_release(&key); > > + return 1; > > + } > > + tracking->remote = remote; > > + > > + strbuf_reset(&key); > > + strbuf_addf(&key, "branch.%s.merge", bare_ref); > > + if (git_config_get_string(key.buf, &tracking->src)) { > > + warning("branch.autoSetupMerge=inherit, but could not find %s", > > + key.buf); > > + strbuf_release(&key); > > + return 1; > > + } > > + > > + tracking->matches = 1; > > + strbuf_release(&key); > > + return 0; > > +} > > I believe that we can get the branch remote via struct branch. Instead > of reading the config, we could do something along the lines of: > > int *explicit; > struct branch *branch = branch_get(); > char *remote = remote_for_branch(branch, explicit); > /* Optionally check explicit if we don't want to fall back to > * "origin" */ > > I'm not sure which is the idiomatic way to get the branch remote, feel > free to correct me. Will fix in V4, thanks.