All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Schindelin <johannes.schindelin@gmx.de>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
	Jacob Keller <jacob.keller@gmail.com>
Subject: [PATCH 6/8] sequencer: handle autosquash and post-rewrite for merge commands
Date: Thu, 18 Jan 2018 16:35:57 +0100 (STD)	[thread overview]
Message-ID: <219dbf95a8069190abe0986ca66b65a8ae3e670d.1516225925.git.johannes.schindelin@gmx.de> (raw)
In-Reply-To: <cover.1516225925.git.johannes.schindelin@gmx.de>

In the previous patches, we implemented the basic functionality of the
`git rebase -i --recreate-merges` command, in particular the `merge`
command to create merge commits in the sequencer.

The interactive rebase is a lot more these days, though, than a simple
cherry-pick in a loop. For example, it calls the post-rewrite hook (if
any) after rebasing with a mapping of the old->new commits. And the
interactive rebase also supports the autosquash mode, where commits
whose oneline is of the form `fixup! <oneline>` or `squash! <oneline>`
are rearranged to amend commits whose oneline they match.

This patch implements the post-rewrite and autosquash handling for the
`merge` command we just introduced. The other commands that were added
recently (`label`, `reset` and `bud`) do not create new commits,
therefore post-rewrite & autosquash do not need to handle them.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 refs.c                            |  3 ++-
 sequencer.c                       | 10 +++++++---
 t/t3430-rebase-recreate-merges.sh | 39 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/refs.c b/refs.c
index 20ba82b4343..e8b84c189ff 100644
--- a/refs.c
+++ b/refs.c
@@ -600,7 +600,8 @@ int dwim_log(const char *str, int len, struct object_id *oid, char **log)
 static int is_per_worktree_ref(const char *refname)
 {
 	return !strcmp(refname, "HEAD") ||
-		starts_with(refname, "refs/bisect/");
+		starts_with(refname, "refs/bisect/") ||
+		starts_with(refname, "refs/rewritten/");
 }
 
 static int is_pseudoref_syntax(const char *refname)
diff --git a/sequencer.c b/sequencer.c
index 1bef16647b4..b63bfb9a141 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -2413,10 +2413,13 @@ static int pick_commits(struct todo_list *todo_list, struct replay_opts *opts)
 			res = do_reset(item->arg, item->arg_len);
 		else if (item->command == TODO_BUD)
 			res = do_reset("onto", 4);
-		else if (item->command == TODO_MERGE)
+		else if (item->command == TODO_MERGE) {
 			res = do_merge(item->commit,
 				       item->arg, item->arg_len, opts);
-		else if (!is_noop(item->command))
+			if (item->commit)
+				record_in_rewritten(&item->commit->object.oid,
+						    peek_command(todo_list, 1));
+		} else if (!is_noop(item->command))
 			return error(_("unknown command %d"), item->command);
 
 		todo_list->current++;
@@ -3556,7 +3559,8 @@ int rearrange_squash(void)
 		struct subject2item_entry *entry;
 
 		next[i] = tail[i] = -1;
-		if (item->command >= TODO_EXEC) {
+		if (item->command >= TODO_EXEC &&
+		    (item->command != TODO_MERGE || !item->commit)) {
 			subjects[i] = NULL;
 			continue;
 		}
diff --git a/t/t3430-rebase-recreate-merges.sh b/t/t3430-rebase-recreate-merges.sh
index 46ae52f88b3..76e615bd7c1 100755
--- a/t/t3430-rebase-recreate-merges.sh
+++ b/t/t3430-rebase-recreate-merges.sh
@@ -143,4 +143,43 @@ test_expect_success 'with a branch tip that was cherry-picked already' '
 	EOF
 '
 
+test_expect_success 'refs/rewritten/* is worktree-local' '
+	git worktree add wt &&
+	cat >wt/script-from-scratch <<-\EOF &&
+	label xyz
+	exec GIT_DIR=../.git git rev-parse --verify refs/rewritten/xyz >a || :
+	exec git rev-parse --verify refs/rewritten/xyz >b
+	EOF
+
+	test_config -C wt sequence.editor \""$PWD"/replace-editor.sh\" &&
+	git -C wt rebase -i HEAD &&
+	test_must_be_empty wt/a &&
+	test_cmp_rev HEAD "$(cat wt/b)"
+'
+
+test_expect_success 'post-rewrite hook and fixups work for merges' '
+	git checkout -b post-rewrite &&
+	test_commit same1 &&
+	git reset --hard HEAD^ &&
+	test_commit same2 &&
+	git merge -m "to fix up" same1 &&
+	echo same old same old >same2.t &&
+	test_tick &&
+	git commit --fixup HEAD same2.t &&
+	fixup="$(git rev-parse HEAD)" &&
+
+	mkdir -p .git/hooks &&
+	test_when_finished "rm .git/hooks/post-rewrite" &&
+	echo "cat >actual" | write_script .git/hooks/post-rewrite &&
+
+	test_tick &&
+	git rebase -i --autosquash --recreate-merges HEAD^^^ &&
+	printf "%s %s\n%s %s\n%s %s\n%s %s\n" >expect $(git rev-parse \
+		$fixup^^2 HEAD^2 \
+		$fixup^^ HEAD^ \
+		$fixup^ HEAD \
+		$fixup HEAD) &&
+	test_cmp expect actual
+'
+
 test_done
-- 
2.15.1.windows.2.1430.ga56c4f9e2a9



  parent reply	other threads:[~2018-01-18 15:36 UTC|newest]

Thread overview: 412+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-18 15:35 [PATCH 0/8] rebase -i: offer to recreate merge commits Johannes Schindelin
2018-01-18 15:35 ` [PATCH 1/8] sequencer: introduce new commands to reset the revision Johannes Schindelin
2018-01-18 16:25   ` Jacob Keller
2018-01-18 21:13     ` Johannes Schindelin
2018-01-18 21:21       ` Jacob Keller
2018-01-18 21:24     ` Philip Oakley
2018-01-18 21:28       ` Jacob Keller
2018-01-29 20:28       ` Johannes Schindelin
2018-01-22 21:25     ` Junio C Hamano
2018-01-29 22:00       ` Johannes Schindelin
2018-01-19  8:59   ` Eric Sunshine
2018-01-24 22:01     ` Junio C Hamano
2018-01-29 20:55       ` Johannes Schindelin
2018-01-29 20:50     ` Johannes Schindelin
2018-01-30  7:12       ` Eric Sunshine
2018-01-19 12:24   ` [PATCH 1/8] sequencer: introduce new commands to resettherevision Phillip Wood
2018-01-19 18:55     ` Phillip Wood
2018-01-19 18:59       ` Jacob Keller
2018-01-29 21:25         ` Johannes Schindelin
2018-01-29 21:29           ` Johannes Schindelin
2018-01-29 21:23     ` Johannes Schindelin
2018-01-18 15:35 ` [PATCH 2/8] sequencer: introduce the `merge` command Johannes Schindelin
2018-01-18 16:31   ` Jacob Keller
2018-01-18 21:22     ` Johannes Schindelin
2018-01-18 21:26       ` Jacob Keller
2018-01-19  9:54   ` Eric Sunshine
2018-01-19 14:45   ` Phillip Wood
2018-01-20  9:18     ` Jacob Keller
2018-01-29 21:41       ` Johannes Schindelin
2018-01-31 13:48         ` Johannes Schindelin
2018-01-31 17:58           ` Phillip Wood
2018-02-01  6:40           ` Jacob Keller
2018-01-22 22:12   ` Junio C Hamano
2018-01-29 22:15     ` Johannes Schindelin
2018-01-18 15:35 ` [PATCH 3/8] sequencer: fast-forward merge commits, if possible Johannes Schindelin
2018-01-19 14:53   ` Phillip Wood
2018-01-23 19:12     ` Junio C Hamano
2018-01-24 10:32       ` Phillip Wood
2018-01-24 18:51         ` Junio C Hamano
2018-01-29 21:47     ` Johannes Schindelin
2018-01-23 18:51   ` Junio C Hamano
2018-01-29 22:18     ` Johannes Schindelin
2018-01-18 15:35 ` [PATCH 4/8] rebase-helper --make-script: introduce a flag to recreate merges Johannes Schindelin
2018-01-18 21:39   ` Philip Oakley
2018-01-19 10:34   ` Eric Sunshine
2018-01-23 20:13     ` Junio C Hamano
2018-01-29 21:07       ` Johannes Schindelin
2018-01-29 21:05     ` Johannes Schindelin
2018-01-23 20:03   ` Junio C Hamano
2018-01-29 22:37     ` Johannes Schindelin
2018-01-18 15:35 ` [PATCH 5/8] rebase: introduce the --recreate-merges option Johannes Schindelin
2018-01-19 10:55   ` Eric Sunshine
2018-01-29 21:09     ` Johannes Schindelin
2018-01-23 20:22   ` Junio C Hamano
2018-02-10 19:31     ` Johannes Schindelin
2018-02-07  6:16   ` Sergey Organov
2018-02-07  7:26     ` Jacob Keller
2018-02-07  9:47       ` Sergey Organov
2018-02-07  7:27     ` Johannes Sixt
2018-02-07 17:36     ` Johannes Schindelin
2018-02-07 22:58       ` Øyvind Rønningstad
2018-02-07 23:31         ` Junio C Hamano
2018-02-08 12:34           ` Johannes Schindelin
2018-02-14  5:41             ` Sergey Organov
2018-02-09  6:11       ` Sergey Organov
2018-02-09  7:13         ` Johannes Sixt
2018-02-11 10:16           ` Jacob Keller
2018-02-12  7:38           ` Sergey Organov
2018-02-09  6:50   ` Sergey Organov
2018-02-10 23:06     ` Johannes Schindelin
2018-02-12  4:58       ` Sergey Organov
2018-02-12 20:21         ` Johannes Schindelin
2018-02-13  6:44           ` Sergey Organov
2018-02-15  1:08             ` Johannes Schindelin
2018-02-15  4:28               ` Sergey Organov
2018-02-15 16:51                 ` Johannes Schindelin
2018-02-12  5:22       ` Sergey Organov
2018-02-12 20:39         ` Johannes Schindelin
2018-02-13  4:39           ` Jacob Keller
2018-02-13  7:15             ` Sergey Organov
2018-02-14  1:35               ` Jacob Keller
2018-02-15  1:14                 ` Johannes Schindelin
2018-02-15  4:35                   ` Sergey Organov
2018-02-15 16:50                     ` Johannes Schindelin
2018-02-13  6:43           ` Sergey Organov
2018-02-15  1:40             ` Johannes Schindelin
2018-01-18 15:35 ` Johannes Schindelin [this message]
2018-01-18 16:43   ` [PATCH 6/8] sequencer: handle autosquash and post-rewrite for merge commands Jacob Keller
2018-01-18 21:27     ` Johannes Schindelin
2018-01-18 21:29       ` Jacob Keller
2018-01-23 20:27     ` Junio C Hamano
2018-01-18 15:36 ` [PATCH 7/8] pull: accept --rebase=recreate to recreate the branch topology Johannes Schindelin
2018-01-18 15:36 ` [PATCH 8/8] rebase -i: introduce --recreate-merges=no-rebase-cousins Johannes Schindelin
2018-01-18 22:00   ` Philip Oakley
2018-01-29 20:42     ` Johannes Schindelin
2018-01-20  1:09   ` Eric Sunshine
2018-01-18 16:49 ` [PATCH 0/8] rebase -i: offer to recreate merge commits Jacob Keller
2018-01-18 18:36 ` [PATCH 9, 10/8] interactive rebase feedback Stefan Beller
2018-01-18 18:36   ` [PATCH 9/8] [DO NOT APPLY, but squash?] git-rebase--interactive: clarify arguments Stefan Beller
2018-01-18 21:18     ` Jacob Keller
2018-01-18 21:36     ` Johannes Schindelin
2018-01-18 21:58       ` Stefan Beller
2018-01-19 20:30       ` Junio C Hamano
2018-01-20  9:14         ` Jacob Keller
2018-01-29 17:02           ` Johannes Schindelin
2018-01-18 18:36   ` [PATCH 10/8] [DO NOT APPLY, but improve?] rebase--interactive: introduce "stop" command Stefan Beller
2018-01-18 21:20     ` Jacob Keller
2018-01-18 22:08       ` Philip Oakley
2018-01-18 22:09         ` Jacob Keller
2018-01-18 22:00     ` Johannes Schindelin
2018-01-18 22:09       ` Stefan Beller
2018-01-19 20:25 ` [PATCH 0/8] rebase -i: offer to recreate merge commits Junio C Hamano
2018-01-29 21:53   ` Johannes Schindelin
2018-01-23 20:29 ` Junio C Hamano
2018-01-29 22:53   ` Johannes Schindelin
2018-01-29 22:54 ` [PATCH v2 00/10] " Johannes Schindelin
2018-01-29 22:54   ` [PATCH v2 01/10] git-rebase--interactive: clarify arguments Johannes Schindelin
2018-01-29 22:54   ` [PATCH v2 02/10] sequencer: introduce new commands to reset the revision Johannes Schindelin
2018-01-30  8:06     ` Eric Sunshine
2018-02-10 20:58       ` Johannes Schindelin
2018-01-30 20:17     ` Stefan Beller
2018-01-31 13:21       ` Johannes Schindelin
2018-01-31 18:02         ` [PATCH v2 02/10] sequencer: introduce new commands to reset therevision Phillip Wood
2018-02-10 21:49           ` Johannes Schindelin
2018-01-29 22:54   ` [PATCH v2 03/10] sequencer: introduce the `merge` command Johannes Schindelin
2018-01-29 22:54   ` [PATCH v2 04/10] sequencer: fast-forward merge commits, if possible Johannes Schindelin
2018-01-29 22:54   ` [PATCH v2 05/10] rebase-helper --make-script: introduce a flag to recreate merges Johannes Schindelin
2018-01-29 22:54   ` [PATCH v2 06/10] rebase: introduce the --recreate-merges option Johannes Schindelin
2018-01-29 22:54   ` [PATCH v2 07/10] sequencer: make refs generated by the `label` command worktree-local Johannes Schindelin
2018-01-29 22:55   ` [PATCH v2 08/10] sequencer: handle autosquash and post-rewrite for merge commands Johannes Schindelin
2018-01-29 22:55   ` [PATCH v2 09/10] pull: accept --rebase=recreate to recreate the branch topology Johannes Schindelin
2018-01-29 22:55   ` [PATCH v2 10/10] rebase -i: introduce --recreate-merges=[no-]rebase-cousins Johannes Schindelin
2018-01-30 18:47   ` [PATCH v2 00/10] rebase -i: offer to recreate merge commits Stefan Beller
2018-01-31 13:08     ` Johannes Schindelin
2018-01-30 21:36   ` Junio C Hamano
2018-01-31 13:29     ` Johannes Schindelin
2018-02-01  6:37       ` Jacob Keller
2018-02-11  0:09   ` [PATCH v3 00/12] " Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 01/12] sequencer: avoid using errno clobbered by rollback_lock_file() Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 02/12] sequencer: make rearrange_squash() a bit more obvious Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 03/12] git-rebase--interactive: clarify arguments Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 04/12] sequencer: introduce new commands to reset the revision Johannes Schindelin
2018-02-12 19:26       ` Eric Sunshine
2018-02-12 20:46         ` Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 05/12] sequencer: introduce the `merge` command Johannes Schindelin
2018-02-12  8:48       ` Eric Sunshine
2018-02-12 20:17         ` Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 06/12] sequencer: fast-forward merge commits, if possible Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 07/12] rebase-helper --make-script: introduce a flag to recreate merges Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 08/12] rebase: introduce the --recreate-merges option Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 09/12] sequencer: make refs generated by the `label` command worktree-local Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 10/12] sequencer: handle post-rewrite for merge commands Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 11/12] pull: accept --rebase=recreate to recreate the branch topology Johannes Schindelin
2018-02-11  0:10     ` [PATCH v3 12/12] rebase -i: introduce --recreate-merges=[no-]rebase-cousins Johannes Schindelin
2018-02-23 12:35     ` [PATCH v4 00/12] rebase -i: offer to recreate merge commits Johannes Schindelin
2018-02-23 12:35       ` [PATCH v4 01/12] sequencer: avoid using errno clobbered by rollback_lock_file() Johannes Schindelin
2018-02-23 12:36       ` [PATCH v4 02/12] sequencer: make rearrange_squash() a bit more obvious Johannes Schindelin
2018-02-23 12:36       ` [PATCH v4 03/12] git-rebase--interactive: clarify arguments Johannes Schindelin
2018-02-23 12:37       ` [PATCH v4 04/12] sequencer: introduce new commands to reset the revision Johannes Schindelin
2018-02-23 12:37       ` [PATCH v4 05/12] sequencer: introduce the `merge` command Johannes Schindelin
2018-02-23 12:37       ` [PATCH v4 06/12] sequencer: fast-forward merge commits, if possible Johannes Schindelin
2018-02-23 12:38       ` [PATCH v4 07/12] rebase-helper --make-script: introduce a flag to recreate merges Johannes Schindelin
2018-02-23 12:38       ` [PATCH v4 08/12] rebase: introduce the --recreate-merges option Johannes Schindelin
2018-02-23 12:38       ` [PATCH v4 09/12] sequencer: make refs generated by the `label` command worktree-local Johannes Schindelin
2018-02-23 12:39       ` [PATCH v4 10/12] sequencer: handle post-rewrite for merge commands Johannes Schindelin
2018-02-23 12:39       ` [PATCH v4 11/12] pull: accept --rebase=recreate to recreate the branch topology Johannes Schindelin
2018-02-23 12:39       ` [PATCH v4 12/12] rebase -i: introduce --recreate-merges=[no-]rebase-cousins Johannes Schindelin
2018-02-25 10:54       ` [PATCH v4 00/12] rebase -i: offer to recreate merge commits Jacob Keller
2018-02-26 20:49         ` Johannes Schindelin
2018-02-26 21:29     ` [PATCH v5 " Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 01/12] sequencer: avoid using errno clobbered by rollback_lock_file() Johannes Schindelin
2018-02-27 21:33         ` Martin Ågren
2018-03-02 20:33           ` Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 02/12] sequencer: make rearrange_squash() a bit more obvious Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 03/12] git-rebase--interactive: clarify arguments Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 04/12] sequencer: introduce new commands to reset the revision Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 05/12] sequencer: introduce the `merge` command Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 06/12] sequencer: fast-forward merge commits, if possible Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 07/12] rebase-helper --make-script: introduce a flag to recreate merges Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 08/12] rebase: introduce the --recreate-merges option Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 09/12] sequencer: make refs generated by the `label` command worktree-local Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 10/12] sequencer: handle post-rewrite for merge commands Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 11/12] pull: accept --rebase=recreate to recreate the branch topology Johannes Schindelin
2018-02-26 21:29       ` [PATCH v5 12/12] rebase -i: introduce --recreate-merges=[no-]rebase-cousins Johannes Schindelin
2018-03-06  4:02       ` [PATCH v5 00/12] rebase -i: offer to recreate merge commits Igor Djordjevic
2018-03-07 13:50         ` Johannes Schindelin
2018-04-10 12:29       ` [PATCH v6 00/15] rebase -i: offer to recreate commit topology Johannes Schindelin
2018-04-10 12:29         ` [PATCH v6 01/15] sequencer: avoid using errno clobbered by rollback_lock_file() Johannes Schindelin
2018-04-10 12:29         ` [PATCH v6 02/15] sequencer: make rearrange_squash() a bit more obvious Johannes Schindelin
2018-04-10 12:29         ` [PATCH v6 03/15] git-rebase--interactive: clarify arguments Johannes Schindelin
2018-04-10 12:29         ` [PATCH v6 04/15] sequencer: introduce new commands to reset the revision Johannes Schindelin
2018-04-11  6:17           ` Sergey Organov
2018-04-11 11:36             ` Johannes Schindelin
2018-04-11 16:07               ` Sergey Organov
2018-04-13 10:03           ` Phillip Wood
2018-04-15 17:17             ` Philip Oakley
2018-04-18 18:00               ` Phillip Wood
2018-04-10 12:29         ` [PATCH v6 05/15] sequencer: introduce the `merge` command Johannes Schindelin
2018-04-13 10:12           ` Phillip Wood
2018-04-13 17:57             ` Phillip Wood
2018-04-14  0:51               ` Johannes Schindelin
2018-04-18 18:04                 ` Phillip Wood
2018-04-19 12:03                 ` Johannes Schindelin
2018-04-10 12:29         ` [PATCH v6 06/15] sequencer: fast-forward `merge` commands, if possible Johannes Schindelin
2018-04-10 12:29         ` [PATCH v6 07/15] rebase-helper --make-script: introduce a flag to rebase merges Johannes Schindelin
2018-04-10 12:29         ` [PATCH v6 08/15] rebase: introduce the --rebase-merges option Johannes Schindelin
2018-04-10 12:30         ` [PATCH v6 09/15] rebase --rebase-merges: add test for --keep-empty Johannes Schindelin
2018-04-10 12:30         ` [PATCH v6 10/15] sequencer: make refs generated by the `label` command worktree-local Johannes Schindelin
2018-04-10 12:30         ` [PATCH v6 11/15] sequencer: handle post-rewrite for merge commands Johannes Schindelin
2018-04-10 12:30         ` [PATCH v6 12/15] rebase --rebase-merges: avoid "empty merges" Johannes Schindelin
2018-04-10 12:30         ` [PATCH v6 13/15] pull: accept --rebase=merges to recreate the branch topology Johannes Schindelin
2018-04-10 12:30         ` [PATCH v6 14/15] rebase -i: introduce --rebase-merges=[no-]rebase-cousins Johannes Schindelin
2018-04-12 11:30           ` Sergey Organov
2018-04-10 12:30         ` [PATCH v6 15/15] rebase -i --rebase-merges: add a section to the man page Johannes Schindelin
2018-04-10 18:49           ` Martin Ågren
2018-04-10 21:56             ` Johannes Schindelin
2018-04-11 15:35           ` Phillip Wood
2018-04-11 19:10             ` Eric Sunshine
2018-04-12  9:00               ` Johannes Schindelin
2018-04-13 15:21               ` Phillip Wood
2018-04-12  9:30             ` Johannes Schindelin
2018-04-12 18:29               ` Jacob Keller
2018-04-13 15:27               ` Phillip Wood
2018-04-12 11:52           ` Sergey Organov
2018-04-10 14:52         ` [PATCH v6 00/15] rebase -i: offer to recreate commit topology Sergey Organov
2018-04-10 22:11           ` Johannes Schindelin
2018-04-11  4:54             ` Sergey Organov
2018-04-11 11:28               ` Johannes Schindelin
2018-04-11 13:13                 ` Sergey Organov
2018-04-11 20:40                   ` Johannes Schindelin
2018-04-12  8:34                     ` Sergey Organov
2018-04-12 12:31                       ` Johannes Schindelin
2018-04-11 23:52                   ` Jacob Keller
2018-04-12  5:42                     ` Sergey Organov
2018-04-12 17:03                       ` Jacob Keller
2018-04-12 22:02                         ` Johannes Schindelin
2018-04-12 22:14                           ` Jacob Keller
2018-04-13 12:08                             ` Johannes Schindelin
2018-04-13 15:43                           ` Phillip Wood
2018-04-13 23:48                             ` Johannes Schindelin
2018-04-19  4:24                               ` Sergey Organov
2018-04-19  8:23                                 ` Jacob Keller
2018-04-19 11:28                                   ` Sergey Organov
2018-04-20  8:26                                   ` Johannes Schindelin
2018-04-20 20:39                                     ` Jacob Keller
2018-04-18  5:23                         ` Sergey Organov
2018-04-19 12:12         ` [PATCH v7 00/17] " Johannes Schindelin
2018-04-19 12:15           ` [PATCH v7 01/17] sequencer: avoid using errno clobbered by rollback_lock_file() Johannes Schindelin
2018-04-19 12:18           ` [PATCH v7 02/17] sequencer: make rearrange_squash() a bit more obvious Johannes Schindelin
2018-04-19 12:19           ` [PATCH v7 03/17] sequencer: refactor how original todo list lines are accessed Johannes Schindelin
2018-04-19 12:19           ` [PATCH v7 04/17] sequencer: offer helpful advice when a command was rescheduled Johannes Schindelin
2018-04-19 12:20           ` [PATCH v7 05/17] git-rebase--interactive: clarify arguments Johannes Schindelin
2018-04-19 12:20           ` [PATCH v7 06/17] sequencer: introduce new commands to reset the revision Johannes Schindelin
2018-04-20  9:39             ` Phillip Wood
2018-04-20 22:39               ` Johannes Schindelin
2018-04-19 12:20           ` [PATCH v7 07/17] # This is a combination of 2 commits. # This is the 1st commit message: Johannes Schindelin
2018-04-20  5:38             ` Eric Sunshine
2018-04-20  8:34               ` Johannes Schindelin
2018-04-20 21:06               ` [PATCH v2 0/4] rebase -i: avoid stale "# This is a combination of" in commit messages Johannes Schindelin
2018-04-20 21:07                 ` [PATCH v2 1/4] rebase -i: demonstrate bugs with fixup!/squash! " Johannes Schindelin
2018-04-20 21:07                 ` [PATCH v2 2/4] rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON Johannes Schindelin
2018-04-20 21:16                   ` Stefan Beller
2018-04-21  7:20                     ` Johannes Schindelin
2018-04-20 21:07                 ` [PATCH v2 3/4] sequencer: leave a tell-tale when a fixup/squash failed Johannes Schindelin
2018-04-20 21:25                   ` Stefan Beller
2018-04-21  7:24                     ` Johannes Schindelin
2018-04-20 21:08                 ` [PATCH v2 4/4] rebase --skip: clean up commit message after a failed fixup/squash Johannes Schindelin
2018-04-21  7:34               ` [PATCH v3 0/4] rebase -i: avoid stale "# This is a combination of" in commit messages Johannes Schindelin
2018-04-21  7:35                 ` [PATCH v3 1/4] rebase -i: demonstrate bugs with fixup!/squash! " Johannes Schindelin
2018-04-21  7:35                 ` [PATCH v3 2/4] rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON Johannes Schindelin
2018-04-21  7:35                 ` [PATCH v3 3/4] sequencer: leave a tell-tale when a fixup/squash failed Johannes Schindelin
2018-04-21  7:39                 ` [PATCH v3 4/4] rebase --skip: clean up commit message after a failed fixup/squash Johannes Schindelin
2018-04-23 18:11                 ` [PATCH v3 0/4] rebase -i: avoid stale "# This is a combination of" in commit messages Stefan Beller
2018-04-23 19:50                   ` [PATCH v3 0/4] rebase -i: avoid stale "# This is a combinationof" " Phillip Wood
2018-04-25 12:48                     ` Johannes Schindelin
2018-04-25 17:09                       ` Phillip Wood
2018-04-26  9:51                         ` Johannes Schindelin
2018-04-26 10:52                           ` Phillip Wood
2018-04-24  1:28                 ` [PATCH v3 0/4] rebase -i: avoid stale "# This is a combination of" " Junio C Hamano
2018-04-27 20:48               ` [PATCH v4 " Johannes Schindelin
2018-04-27 20:48                 ` [PATCH v4 1/4] rebase -i: demonstrate bugs with fixup!/squash! " Johannes Schindelin
2018-04-27 20:48                 ` [PATCH v4 2/4] rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON Johannes Schindelin
2018-04-27 20:48                 ` [PATCH v4 3/4] sequencer: always commit without editing when asked for Johannes Schindelin
2018-04-27 20:48                 ` [PATCH v4 4/4] rebase --skip: clean up commit message after a failed fixup/squash Johannes Schindelin
2018-04-27 21:28                   ` Stefan Beller
2018-04-28 13:05                     ` Johannes Schindelin
2018-05-06 17:50                   ` Phillip Wood
2018-05-09 10:50                     ` Phillip Wood
2018-10-02 13:50                     ` Johannes Schindelin
2018-10-08 13:37                       ` Phillip Wood
2018-04-19 12:21           ` [PATCH v7 08/17] sequencer: fast-forward `merge` commands, if possible Johannes Schindelin
2018-04-19 12:21           ` [PATCH v7 09/17] rebase-helper --make-script: introduce a flag to rebase merges Johannes Schindelin
2018-04-19 12:21           ` [PATCH v7 10/17] rebase: introduce the --rebase-merges option Johannes Schindelin
2018-04-19 12:22           ` [PATCH v7 11/17] rebase --rebase-merges: add test for --keep-empty Johannes Schindelin
2018-04-19 12:22           ` [PATCH v7 12/17] sequencer: make refs generated by the `label` command worktree-local Johannes Schindelin
2018-04-19 12:23           ` [PATCH v7 13/17] sequencer: handle post-rewrite for merge commands Johannes Schindelin
2018-04-19 12:23           ` [PATCH v7 14/17] rebase --rebase-merges: avoid "empty merges" Johannes Schindelin
2018-04-19 12:23           ` [PATCH v7 15/17] pull: accept --rebase=merges to recreate the branch topology Johannes Schindelin
2018-04-19 12:24           ` [PATCH v7 16/17] rebase -i: introduce --rebase-merges=[no-]rebase-cousins Johannes Schindelin
2018-04-19 12:24           ` [PATCH v7 17/17] rebase -i --rebase-merges: add a section to the man page Johannes Schindelin
2018-04-21 10:29           ` [PATCH v8 00/16] rebase -i: offer to recreate commit topology by rebasing merges Johannes Schindelin
2018-04-21 10:30             ` [PATCH v8 01/16] sequencer: avoid using errno clobbered by rollback_lock_file() Johannes Schindelin
2018-04-21 10:30             ` [PATCH v8 02/16] sequencer: make rearrange_squash() a bit more obvious Johannes Schindelin
2018-04-21 10:31             ` [PATCH v8 03/16] sequencer: refactor how original todo list lines are accessed Johannes Schindelin
2018-04-21 10:31             ` [PATCH v8 04/16] sequencer: offer helpful advice when a command was rescheduled Johannes Schindelin
2018-04-21 10:32             ` [PATCH v8 05/16] git-rebase--interactive: clarify arguments Johannes Schindelin
2018-04-21 10:33             ` [PATCH v8 06/16] sequencer: introduce the `merge` command Johannes Schindelin
2018-04-21 15:56               ` Phillip Wood
2018-04-22 17:17                 ` Phillip Wood
2018-04-23 12:22                   ` Johannes Schindelin
2018-04-23 12:20                 ` Johannes Schindelin
2018-04-23 15:54                   ` Phillip Wood
2018-04-24  5:13                     ` Martin Ågren
2018-04-24  5:13                       ` [PATCH 1/2] merge: setup `opts` later in `checkout_fast_forward()` Martin Ågren
2018-04-24  6:20                         ` Jacob Keller
2018-04-24  9:36                           ` Martin Ågren
2018-04-24 11:30                             ` Johannes Schindelin
2018-04-24  5:13                       ` [PATCH 2/2] unpack_trees_options: free messages when done Martin Ågren
2018-04-24 16:29                         ` Elijah Newren
2018-04-28 11:32                           ` Martin Ågren
2018-04-28 12:30                             ` Johannes Schindelin
2018-04-28 20:56                             ` Elijah Newren
2018-05-16 14:32                             ` Elijah Newren
2018-05-16 16:30                               ` [PATCH v2 0/3] " Martin Ågren
2018-05-16 16:30                                 ` [PATCH v2 1/3] merge: setup `opts` later in `checkout_fast_forward()` Martin Ågren
2018-05-16 16:41                                   ` Stefan Beller
2018-05-16 19:29                                     ` Martin Ågren
2018-05-16 21:21                                       ` Jacob Keller
2018-05-16 21:20                                     ` Jacob Keller
2018-05-17 21:48                                   ` Junio C Hamano
2018-05-18  1:59                                     ` Jacob Keller
2018-05-16 16:30                                 ` [PATCH v2 2/3] merge-recursive: provide pair of `unpack_trees_{start,finish}()` Martin Ågren
2018-05-16 16:31                                 ` [PATCH v2 3/3] unpack_trees_options: free messages when done Martin Ågren
2018-05-17 22:10                                   ` Junio C Hamano
2018-05-18  5:08                                     ` Martin Ågren
2018-05-18 21:23                                       ` [PATCH v3 0/3] " Martin Ågren
2018-05-18 21:23                                         ` [PATCH v3 1/3] merge: setup `opts` later in `checkout_fast_forward()` Martin Ågren
2018-05-18 21:23                                         ` [PATCH v3 2/3] merge-recursive: provide pair of `unpack_trees_{start,finish}()` Martin Ågren
2018-05-18 21:23                                         ` [PATCH v3 3/3] unpack_trees_options: free messages when done Martin Ågren
2018-05-18 21:33                                           ` Jeff King
2018-05-18 22:30                                             ` Elijah Newren
2018-05-19  1:02                                               ` Jeff King
2018-05-19  6:13                                                 ` Martin Ågren
2018-05-20 10:17                                                   ` [PATCH v4 0/4] " Martin Ågren
2018-05-20 10:17                                                     ` [PATCH v4 1/4] merge: setup `opts` later in `checkout_fast_forward()` Martin Ågren
2018-05-20 10:17                                                     ` [PATCH v4 2/4] merge-recursive: provide pair of `unpack_trees_{start,finish}()` Martin Ågren
2018-05-20 10:17                                                     ` [PATCH v4 3/4] string-list: provide `string_list_appendf()` Martin Ågren
2018-05-20 19:12                                                       ` Jacob Keller
2018-05-21  0:01                                                         ` Re*: " Junio C Hamano
2018-05-21  0:25                                                           ` Junio C Hamano
2018-05-21  2:39                                                             ` Jeff King
2018-05-21 14:54                                                             ` [PATCH v5 0/4] unpack_trees_options: free messages when done Martin Ågren
2018-05-21 14:54                                                               ` [PATCH v5 1/4] merge: setup `opts` later in `checkout_fast_forward()` Martin Ågren
2018-05-21 14:54                                                               ` [PATCH v5 2/4] merge-recursive: provide pair of `unpack_trees_{start,finish}()` Martin Ågren
2018-05-21 14:54                                                               ` [PATCH v5 3/4] argv-array: return the pushed string from argv_push*() Martin Ågren
2018-05-21 14:54                                                               ` [PATCH v5 4/4] unpack_trees_options: free messages when done Martin Ågren
2018-05-21 21:38                                                               ` [PATCH v5 0/4] " Jeff King
2018-05-22  2:46                                                               ` Junio C Hamano
2018-05-22  2:54                                                                 ` Junio C Hamano
2018-05-22 11:11                                                                   ` Martin Ågren
2018-05-23  0:48                                                                     ` Junio C Hamano
2018-05-21  2:38                                                           ` Re*: [PATCH v4 3/4] string-list: provide `string_list_appendf()` Jeff King
2018-05-20 10:17                                                     ` [PATCH v4 4/4] unpack_trees_options: free messages when done Martin Ågren
2018-05-16 21:54                                 ` [PATCH v2 0/3] " Elijah Newren
2018-05-17 12:09                                   ` Ben Peart
2018-04-24  8:22                       ` [PATCH v8 06/16] sequencer: introduce the `merge` command Johannes Schindelin
2018-04-22 12:01               ` Philip Oakley
2018-04-23 12:03                 ` Johannes Schindelin
2018-04-23 20:34                   ` Philip Oakley
2018-04-24  8:11                     ` Johannes Schindelin
2018-04-24 19:41                       ` Philip Oakley
2018-04-22 13:55               ` Philip Oakley
2018-04-21 10:33             ` [PATCH v8 07/16] sequencer: fast-forward `merge` commands, if possible Johannes Schindelin
2018-04-21 10:34             ` [PATCH v8 08/16] rebase-helper --make-script: introduce a flag to rebase merges Johannes Schindelin
2018-04-22 13:42               ` Philip Oakley
2018-04-24  8:33                 ` Johannes Schindelin
2018-04-21 10:34             ` [PATCH v8 09/16] rebase: introduce the --rebase-merges option Johannes Schindelin
2018-04-22 14:15               ` Philip Oakley
2018-04-24  5:01                 ` Junio C Hamano
2018-04-24  9:03                   ` Johannes Schindelin
2018-04-24  8:40                 ` Johannes Schindelin
2018-04-22 14:37               ` Philip Oakley
2018-04-24 10:52                 ` Johannes Schindelin
2018-04-21 10:35             ` [PATCH v8 10/16] rebase --rebase-merges: add test for --keep-empty Johannes Schindelin
2018-04-21 10:43             ` [PATCH v8 11/16] sequencer: make refs generated by the `label` command worktree-local Johannes Schindelin
2018-04-21 10:46             ` [PATCH v8 12/16] sequencer: handle post-rewrite for merge commands Johannes Schindelin
2018-04-21 10:47             ` [PATCH v8 13/16] rebase --rebase-merges: avoid "empty merges" Johannes Schindelin
2018-04-21 10:49             ` [PATCH v8 14/16] pull: accept --rebase=merges to recreate the branch topology Johannes Schindelin
2018-04-21 10:57             ` [PATCH v8 15/16] rebase -i: introduce --rebase-merges=[no-]rebase-cousins Johannes Schindelin
2018-04-21 11:09             ` [PATCH v8 16/16] rebase -i --rebase-merges: add a section to the man page Johannes Schindelin
2018-04-25 12:28             ` [PATCH v9 00/17] rebase -i: offer to recreate commit topology by rebasing merges Johannes Schindelin
2018-04-25 12:28               ` [PATCH v9 01/17] sequencer: avoid using errno clobbered by rollback_lock_file() Johannes Schindelin
2018-04-25 12:28               ` [PATCH v9 02/17] sequencer: make rearrange_squash() a bit more obvious Johannes Schindelin
2018-04-25 12:28               ` [PATCH v9 03/17] sequencer: refactor how original todo list lines are accessed Johannes Schindelin
2018-04-25 12:28               ` [PATCH v9 04/17] sequencer: offer helpful advice when a command was rescheduled Johannes Schindelin
2018-04-25 12:28               ` [PATCH v9 05/17] git-rebase--interactive: clarify arguments Johannes Schindelin
2018-04-25 12:28               ` [PATCH v9 06/17] sequencer: introduce new commands to reset the revision Johannes Schindelin
2018-04-25 12:28               ` [PATCH v9 07/17] sequencer: introduce the `merge` command Johannes Schindelin
2018-04-25 12:28               ` [PATCH v9 08/17] sequencer: fast-forward `merge` commands, if possible Johannes Schindelin
2018-04-25 12:29               ` [PATCH v9 09/17] rebase-helper --make-script: introduce a flag to rebase merges Johannes Schindelin
2018-04-25 12:29               ` [PATCH v9 10/17] rebase: introduce the --rebase-merges option Johannes Schindelin
2018-04-25 12:29               ` [PATCH v9 11/17] rebase --rebase-merges: add test for --keep-empty Johannes Schindelin
2018-04-25 12:29               ` [PATCH v9 12/17] sequencer: make refs generated by the `label` command worktree-local Johannes Schindelin
2018-04-25 12:29               ` [PATCH v9 13/17] sequencer: handle post-rewrite for merge commands Johannes Schindelin
2018-04-25 12:29               ` [PATCH v9 14/17] rebase --rebase-merges: avoid "empty merges" Johannes Schindelin
2018-04-25 12:29               ` [PATCH v9 15/17] pull: accept --rebase=merges to recreate the branch topology Johannes Schindelin
2018-04-25 12:29               ` [PATCH v9 16/17] rebase -i: introduce --rebase-merges=[no-]rebase-cousins Johannes Schindelin
2018-04-25 12:29               ` [PATCH v9 17/17] rebase -i --rebase-merges: add a section to the man page Johannes Schindelin
2018-04-26  3:51               ` [PATCH v9 00/17] rebase -i: offer to recreate commit topology by rebasing merges Junio C Hamano
2018-04-26  6:06                 ` Junio C Hamano
2018-05-25 14:19               ` Sergey Organov
2018-05-25 15:44                 ` Sergey Organov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=219dbf95a8069190abe0986ca66b65a8ae3e670d.1516225925.git.johannes.schindelin@gmx.de \
    --to=johannes.schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jacob.keller@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.