Richard Hansen wrote:
> On 2014-05-01 20:00, Felipe Contreras wrote:
> > Also 'branch.<name>.rebase' to 'branch.<name>.pullmode'.
> >
> > This way we can add more modes and the default can be something else,
> > namely it can be set to merge-ff-only, so eventually we can reject
> > non-fast-forward merges by default.
> >
> > The old configurations still work, but get deprecated.
>
> s/get/are/
>
> >
> > Signed-off-by: Felipe Contreras <[email protected]>
> > ---
> > Documentation/config.txt | 39 ++++++++++++++++++++++-----------------
> > Documentation/git-pull.txt | 2 +-
> > branch.c | 4 ++--
> > builtin/remote.c | 14 ++++++++++++--
> > git-pull.sh | 31 +++++++++++++++++++++++++++++--
> > t/t3200-branch.sh | 40 ++++++++++++++++++++--------------------
> > t/t5601-clone.sh | 4 ++--
> > 7 files changed, 88 insertions(+), 46 deletions(-)
> >
> > diff --git a/Documentation/config.txt b/Documentation/config.txt
> > index c26a7c8..c028aeb 100644
> > --- a/Documentation/config.txt
> > +++ b/Documentation/config.txt
> > @@ -708,7 +708,7 @@ branch.autosetupmerge::
> > branch.autosetuprebase::
> > When a new branch is created with 'git branch' or 'git checkout'
> > that tracks another branch, this variable tells Git to set
> > - up pull to rebase instead of merge (see "branch.<name>.rebase").
> > + up pull to rebase instead of merge (see "branch.<name>.pullmode").
> > When `never`, rebase is never automatically set to true.
> > When `local`, rebase is set to true for tracked branches of
> > other local branches.
>
> Should branch.autosetuprebase be replaced with a new
> branch.autosetupmode setting?
Maybe. But if so, I think that should be done in another series.
Otherwise we'll never have a chance to change anything.
> > @@ -764,15 +764,17 @@ branch.<name>.mergeoptions::
> > option values containing whitespace characters are currently not
> > supported.
> >
> > -branch.<name>.rebase::
> > - When true, rebase the branch <name> on top of the fetched branch,
> > - instead of merging the default branch from the default remote when
> > - "git pull" is run. See "pull.rebase" for doing this in a non
> > - branch-specific manner.
> > +branch.<name>.pullmode::
> > + When "git pull" is run, this determines if it would either merge or
> > + rebase the fetched branch.
>
> To me this sentence implies that 'rebase' would rebase the fetched
> branch onto HEAD, when it's actually the other way around.
Right.
This actually interesting mode of thinking:
a) git pull --rebase
We want to rebase HEAD onto @{upstream}.
b) git pull --merge
We want to merge HEAD into @{upstream}. (Why are we doing the opposite?)
c) git pull --rebase github john
We weant to rebase github/john onto HEAD. (We are doing the opposite?)
d) git pull --merge github john
We want to merge github/john into HEAD.
> > The possible values are 'merge',
> > + 'rebase', and 'rebase-preserve'.
>
> While the name 'merge' is mostly self-explanatory, I think it needs
> further clarification: Does 'merge' imply --no-ff? Or --ff? Or the
> value of merge.ff?
'pull.mode=merge' will do the same as `git merge`, I don't see where or
how it can be explained more clearly.
> Which side will be the first parent?
The same as things currently are: the pulled branch into the current
branch (current branch is first parent).
We should probably change this, but that's out of scope of this series,
and hasn't been decided yet.
> > See "pull.mode" for doing this in a
> > + non branch-specific manner.
>
> I find this sentence to be a bit unclear and would prefer something
> like: "Defaults to the value of pull.mode."
Hmm, might make sense.
> > +
> > - When preserve, also pass `--preserve-merges` along to 'git rebase'
> > - so that locally committed merge commits will not be flattened
> > - by running 'git pull'.
> > + When 'rebase-preserve', also pass `--preserve-merges` along to
> > + 'git rebase' so that locally committed merge commits will not be
> > + flattened by running 'git pull'.
> > ++
> > + It was named 'branch.<name>.rebase' but that is deprecated now.
>
> To me this sentence implies that .rebase was simply renamed to .pullmode
> with no other changes. I'd prefer something like this:
>
> branch.<name>.rebase::
> Deprecated in favor of branch.<name>.pullmode.
>
> (Same goes for pull.rebase.)
Right.
> > +
> > *NOTE*: this is a possibly dangerous operation; do *not* use
> > it unless you understand the implications (see linkgit:git-rebase[1]
> > @@ -1881,15 +1883,18 @@ pretty.<name>::
> > Note that an alias with the same name as a built-in format
> > will be silently ignored.
> >
> > -pull.rebase::
> > - When true, rebase branches on top of the fetched branch, instead
> > - of merging the default branch from the default remote when "git
> > - pull" is run. See "branch.<name>.rebase" for setting this on a
> > - per-branch basis.
> > +pull.mode::
> > + When "git pull" is run, this determines if it would either merge or
> > + rebase the fetched branch. The possible values are 'merge',
> > + 'rebase', and 'rebase-preserve'. See "branch.<name>.pullmode" for doing
> > + this in a non branch-specific manner.
> > ++
> > + When 'rebase-preserve', also pass `--preserve-merges` along to
> > + 'git rebase' so that locally committed merge commits will not be
> > + flattened by running 'git pull'.
> > ++
> > +
> > - When preserve, also pass `--preserve-merges` along to 'git rebase'
> > - so that locally committed merge commits will not be flattened
> > - by running 'git pull'.
>
> The default value should be documented. Also, rather than copy+paste
> the description from branch.<name>.pullmode, I'd prefer a brief
> reference. For example:
>
> pull.mode::
> See branch.<name>.pullmode. Defaults to 'merge'.
I'd say pull.mode is the important one.
--
Felipe Contreras
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html