From: Philip Oakley Date: Sun, 22 Apr 2018 13:55:54 GMT Subject: Re: [PATCH v8 06/16] sequencer: introduce the `merge` command Message-ID: <57A18662264741D1A6CD3A10C8749175@PhilipOakley> In-Reply-To: <7360a072f6fdd276d30839613434329b645e2cce.1524306546.git.johannes.schindelin@gmx.de> From: "Johannes Schindelin" > This patch is part of the effort to reimplement `--preserve-merges` with > a substantially improved design, a design that has been developed in the > Git for Windows project to maintain the dozens of Windows-specific patch > series on top of upstream Git. > > The previous patch implemented the `label` and `reset` commands to label The previous patch was [Patch 05/16] git-rebase--interactive: clarify arguments, so this statement doesn't appear to be true. Has a patch been missed or re-ordered? Or should it be simply "This patch implements" ? Likewise the patch subject would be updated. > commits and to reset to labeled commits. This patch adds the `merge` s/adds/also adds/ ? > command, with the following syntax: > > merge [-C ] # > > The parameter in this instance is the *original* merge commit, > whose author and message will be used for the merge commit that is about > to be created. > > The parameter refers to the (possibly rewritten) revision to > merge. Let's see an example of a todo list: > The example ought to also note that `label onto` is to `# label current HEAD with a name`, seeing as this is the first occurance. It may be obvious in retrospect, but not at first reading. > label onto > > # Branch abc > reset onto Is this reset strictly necessary. We are already there @head. > pick deadbeef Hello, world! > label abc > > reset onto > pick cafecafe And now for something completely different > merge -C baaabaaa abc # Merge the branch 'abc' into master > > To edit the merge commit's message (a "reword" for merges, if you will), > use `-c` (lower-case) instead of `-C`; this convention was borrowed from > `git commit` that also supports `-c` and `-C` with similar meanings. > > To create *new* merges, i.e. without copying the commit message from an > existing commit, simply omit the `-C ` parameter (which will > open an editor for the merge message): > > merge abc > > This comes in handy when splitting a branch into two or more branches. > > Note: this patch only adds support for recursive merges, to keep things > simple. Support for octopus merges will be added later in a separate > patch series, support for merges using strategies other than the > recursive merge is left for the future. > > Signed-off-by: Johannes Schindelin > --- > git-rebase--interactive.sh | 6 + > sequencer.c | 407 ++++++++++++++++++++++++++++++++++++- > 2 files changed, 406 insertions(+), 7 deletions(-) > > diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh > index e1b865f43f2..ccd5254d1c9 100644 > --- a/git-rebase--interactive.sh > +++ b/git-rebase--interactive.sh > @@ -162,6 +162,12 @@ s, squash = use commit, but meld into > previous commit > f, fixup = like \"squash\", but discard this commit's log message > x, exec = run command (the rest of the line) using shell > d, drop = remove commit > +l, label