From: Bert Wesarg Date: Fri, 11 Feb 2011 07:37:17 GMT Subject: Re: [PATCH v4 4/4] merge: add support for merging from upstream by default Message-ID: In-Reply-To: <1297381209-6377-8-git-send-email-jaredhance@gmail.com> On Fri, Feb 11, 2011 at 00:40, Jared Hance wrote: > Add the option merge.defaultupstream to add support for merging from > the upstream branch by default. The upstream branch is found using > branch.[name].merge. > > Signed-off-by: Jared Hance > --- >  Documentation/config.txt |    6 ++++++ >  builtin/merge.c          |   32 +++++++++++++++++++++++--------- >  2 files changed, 29 insertions(+), 9 deletions(-) > > diff --git a/Documentation/config.txt b/Documentation/config.txt > index c5e1835..4415691 100644 > --- a/Documentation/config.txt > +++ b/Documentation/config.txt > @@ -1389,6 +1389,12 @@ man..path:: > >  include::merge-config.txt[] > > +merge.defaultUpstream:: > +       If merge is called without any ref arguments, merge from the branch > +       specified in branch..merge, which is considered to be > +       the upstream branch for the current branch, possibly set by --track or > +       --set-upstream. > + >  mergetool..path:: >        Override the path for the given tool.  This is useful in case >        your tool is not in the PATH. > diff --git a/builtin/merge.c b/builtin/merge.c > index 71b392d..a3ca6a0 100644 > --- a/builtin/merge.c > +++ b/builtin/merge.c > @@ -37,7 +37,7 @@ struct strategy { >  }; > >  static const char * const builtin_merge_usage[] = { > -       "git merge [options] ...", > +       "git merge [options] [...]", >        "git merge [options] HEAD ", >        NULL >  }; > @@ -58,6 +58,8 @@ static int option_renormalize; >  static int verbosity; >  static int allow_rerere_auto; >  static int abort_current_merge; > +static int default_upstream; > +static const char *upstream_branch; > >  static struct strategy all_strategy[] = { >        { "recursive",  DEFAULT_TWOHEAD | NO_TRIVIAL }, > @@ -524,7 +526,8 @@ static int per_branch_config(const char *k, const char *v, void *cb) >                free(buf); > >                return 0; > -       } > +       } else if (!strcmp(variable, ".merge")) > +               return git_config_string(&upstream_branch, k, v); I don't think, that this is the correct way to get the "upstream" from a branch. Please have a look into sha1_name.c:interpret_branch_name() and builtin/for-each-ref.c:populate_value() how they resolve "upstream". Bert