git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Jakub Narębski" <jnareb@gmail.com>
To: Johannes Schindelin <johannes.schindelin@gmx.de>, git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH 16/22] sequencer: prepare for rebase -i's GPG settings
Date: Wed, 31 Aug 2016 22:10:38 +0200	[thread overview]
Message-ID: <104de15c-77e8-9474-9579-4934ca8a4323@gmail.com> (raw)
In-Reply-To: <c6a37af958f59390c00429a5b38b34d34c9a5b95.1472457609.git.johannes.schindelin@gmx.de>

Hello Johannes,

W dniu 29.08.2016 o 10:06, Johannes Schindelin pisze:

> The rebase command sports a `--gpg-sign` option that is heeded by the
> interactive rebase.

Should it be "sports" or "supports"?

> 
> This patch teaches the sequencer that trick, as part of the bigger
> effort to make the sequencer the work horse of the interactive rebase.
> 
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>  sequencer.c | 48 +++++++++++++++++++++++++++++++++++++++++++-----
>  1 file changed, 43 insertions(+), 5 deletions(-)
> 
> diff --git a/sequencer.c b/sequencer.c
> index 4204cc8..e094ac2 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -15,6 +15,7 @@
>  #include "merge-recursive.h"
>  #include "refs.h"
>  #include "argv-array.h"
> +#include "quote.h"
>  
>  #define GIT_REFLOG_ACTION "GIT_REFLOG_ACTION"
>  
> @@ -33,6 +34,11 @@ static GIT_PATH_FUNC(git_path_head_file, "sequencer/head")
>   * being rebased.
>   */
>  static GIT_PATH_FUNC(rebase_path_author_script, "rebase-merge/author-script")
> +/*
> + * The following files are written by git-rebase just after parsing the
> + * command-line (and are only consumed, not modified, by the sequencer).
> + */

It is good to have this comment here.

> +static GIT_PATH_FUNC(rebase_path_gpg_sign_opt, "rebase-merge/gpg_sign_opt")

I know it is not your fault, but I wonder why this file uses
snake_case_name, while all other use kebab-case-names.  That is,
why it is gpg_sign_opt and not gpg-sign-opt.

>  
>  /* We will introduce the 'interactive rebase' mode later */
>  #define IS_REBASE_I() 0
> @@ -129,6 +135,16 @@ static int has_conforming_footer(struct strbuf *sb, struct strbuf *sob,
>  	return 1;
>  }
>  
> +static const char *gpg_sign_opt_quoted(struct replay_opts *opts)
> +{
> +	static struct strbuf buf = STRBUF_INIT;
> +
> +	strbuf_reset(&buf);
> +	if (opts->gpg_sign)
> +		sq_quotef(&buf, "-S%s", opts->gpg_sign);
> +	return buf.buf;
> +}

All right, this function is quite clear.

Sidenote: it's a pity api-quote.txt is just a placeholder for proper
documentation (including sq_quotef()).  I also wonder why it is not
named sq_quotef_buf() or strbuf_addf_sq().

> +
>  void *sequencer_entrust(struct replay_opts *opts, void *set_me_free_after_use)
>  {
>  	ALLOC_GROW(opts->owned, opts->owned_nr + 1, opts->owned_alloc);
> @@ -471,17 +487,20 @@ int sequencer_commit(const char *defmsg, struct replay_opts *opts,
>  
>  	if (IS_REBASE_I()) {
>  		env = read_author_script();
> -		if (!env)
> +		if (!env) {
> +			const char *gpg_opt = gpg_sign_opt_quoted(opts);
> +
>  			return error("You have staged changes in your working "
>  				"tree. If these changes are meant to be\n"
>  				"squashed into the previous commit, run:\n\n"
> -				"  git commit --amend $gpg_sign_opt_quoted\n\n"

How did this get expanded by error(), and why we want to replace
it if it works?

> +				"  git commit --amend %s\n\n"
>  				"If they are meant to go into a new commit, "
>  				"run:\n\n"
> -				"  git commit $gpg_sign_opt_quoted\n\n"
> +				"  git commit %s\n\n"
>  				"In both case, once you're done, continue "
>  				"with:\n\n"
> -				"  git rebase --continue\n");
> +				"  git rebase --continue\n", gpg_opt, gpg_opt);

Instead of passing option twice, why not make use of %1$s (arg reordering),
that is

  +				"  git commit --amend %1$s\n\n"
[...]
  +				"  git commit %1$s\n\n"


> +		}

So shell quoting is required only for error output.

>  	}
>  
>  	argv_array_init(&array);
> @@ -955,8 +974,27 @@ static int populate_opts_cb(const char *key, const char *value, void *data)
>  
>  static int read_populate_opts(struct replay_opts *opts)
>  {
> -	if (IS_REBASE_I())
> +	if (IS_REBASE_I()) {
> +		struct strbuf buf = STRBUF_INIT;
> +
> +		if (read_oneliner(&buf, rebase_path_gpg_sign_opt(), 1)) {
> +			if (buf.len && buf.buf[buf.len - 1] == '\n') {
> +				if (--buf.len &&
> +				    buf.buf[buf.len - 1] == '\r')
> +					buf.len--;
> +				buf.buf[buf.len] = '\0';
> +			}

Isn't there some strbuf_chomp() / strbuf_strip_eof() function?
Though as strbuf_getline() uses something similar...

> +
> +			if (!starts_with(buf.buf, "-S"))
> +				strbuf_reset(&buf);

Should we signal that there was problem with a file contents?

> +			else {
> +				opts->gpg_sign = buf.buf + 2;
> +				strbuf_detach(&buf, NULL);

Wouldn't we leak 2 characters that got skipped?  Maybe xstrdup would
be better (if it is leaked, and not reattached)?

> +			}
> +		}
> +
>  		return 0;
> +	}
>  
>  	if (!file_exists(git_path_opts_file()))
>  		return 0;
> 

-- 
Jakub Narębski


  reply	other threads:[~2016-08-31 20:10 UTC|newest]

Thread overview: 352+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-29  8:03 [PATCH 00/22] Prepare the sequencer for the upcoming rebase -i patches Johannes Schindelin
2016-08-29  8:03 ` [PATCH 01/22] sequencer: use static initializers for replay_opts Johannes Schindelin
2016-08-29  9:19   ` Dennis Kaarsemaker
2016-08-29 10:54     ` Johannes Schindelin
2016-08-29 17:41     ` Jakub Narębski
2016-08-29 17:06       ` Johannes Schindelin
2016-08-29  8:04 ` [PATCH 02/22] sequencer: use memoized sequencer directory path Johannes Schindelin
2016-08-29 19:54   ` Jakub Narębski
2016-08-29 17:10     ` Johannes Schindelin
2016-08-29  8:04 ` [PATCH 03/22] sequencer: avoid unnecessary indirection Johannes Schindelin
2016-08-29 20:22   ` Jakub Narębski
2016-08-29 17:15     ` Johannes Schindelin
2016-08-29  8:04 ` [PATCH 04/22] sequencer: future-proof remove_sequencer_state() Johannes Schindelin
2016-08-29  9:24   ` Dennis Kaarsemaker
2016-08-29 10:58     ` Johannes Schindelin
2016-08-29 11:19       ` Johannes Schindelin
2016-08-29  8:04 ` [PATCH 05/22] sequencer: allow the sequencer to take custody of malloc()ed data Johannes Schindelin
2016-08-29 21:59   ` Jakub Narębski
2016-08-30  5:33     ` Johannes Sixt
2016-08-30  7:30       ` Johannes Schindelin
2016-08-30  7:29     ` Johannes Schindelin
2016-08-30 11:08       ` Jakub Narębski
2016-08-30 18:25         ` Junio C Hamano
2016-08-31  8:20           ` Johannes Schindelin
2016-08-29  8:04 ` [PATCH 06/22] sequencer: release memory that was allocated when reading options Johannes Schindelin
2016-08-30 14:54   ` Jakub Narębski
2016-08-30 17:52     ` Johannes Schindelin
2016-08-30 20:46       ` Johannes Sixt
2016-08-30 22:07         ` Junio C Hamano
2016-08-30 22:00       ` Jakub Narębski
2016-08-30 18:30   ` Junio C Hamano
2016-08-31  8:07     ` Johannes Schindelin
2016-08-29  8:04 ` [PATCH 07/22] sequencer: future-proof read_populate_todo() Johannes Schindelin
2016-08-30 16:07   ` Jakub Narębski
2016-08-30 16:48     ` Johannes Schindelin
2016-08-29  8:04 ` [PATCH 08/22] sequencer: remove overzealous assumption Johannes Schindelin
2016-08-31 13:41   ` Jakub Narębski
2016-08-31 18:36     ` Johannes Schindelin
2016-08-31 18:46       ` Jakub Narębski
2016-09-01  8:01         ` Johannes Schindelin
2016-09-01 20:00           ` Jakub Narębski
2016-08-31 19:01       ` Junio C Hamano
2016-09-01  8:02         ` Johannes Schindelin
2016-08-29  8:05 ` [PATCH 09/22] sequencer: completely revamp the "todo" script parsing Johannes Schindelin
2016-08-31 17:29   ` Jakub Narębski
2016-08-31 23:03     ` Stefan Beller
2016-09-01  6:35       ` Johannes Schindelin
2016-09-01 18:37         ` Junio C Hamano
2016-09-01  7:49     ` Johannes Schindelin
2016-09-01 22:05       ` Jakub Narębski
2016-09-09 14:12         ` Johannes Schindelin
2016-08-29  8:05 ` [PATCH 10/22] sequencer: avoid completely different messages for different actions Johannes Schindelin
2016-08-31 17:58   ` Jakub Narębski
2016-09-01  7:52     ` Johannes Schindelin
2016-09-01 22:33       ` Jakub Narębski
2016-09-09 14:23         ` Johannes Schindelin
2016-08-29  8:05 ` [PATCH 11/22] sequencer: get rid of the subcommand field Johannes Schindelin
2016-08-31 18:24   ` Jakub Narębski
2016-09-01  7:55     ` Johannes Schindelin
2016-08-29  8:05 ` [PATCH 12/22] sequencer: refactor the code to obtain a short commit name Johannes Schindelin
2016-08-29  9:39   ` Dennis Kaarsemaker
2016-08-29 11:04     ` Johannes Schindelin
2016-08-29  8:05 ` [PATCH 13/22] sequencer: remember the onelines when parsing the todo file Johannes Schindelin
2016-08-31 18:37   ` Jakub Narębski
2016-08-31 19:10     ` Junio C Hamano
2016-08-31 19:24       ` Jakub Narębski
2016-08-31 19:42         ` Junio C Hamano
2016-09-01 13:14           ` Johannes Schindelin
2016-09-01 13:12         ` Johannes Schindelin
2016-09-01 22:52           ` Jakub Narębski
2016-09-01  9:37       ` Johannes Schindelin
2016-09-01 18:47         ` Junio C Hamano
2016-09-09 15:12           ` Johannes Schindelin
2016-09-09 19:06             ` Jakub Narębski
2016-09-11  8:33               ` Git garden shears, was " Johannes Schindelin
2016-09-21 13:17                 ` Jakub Narębski
2016-09-25 18:16                   ` Johannes Schindelin
2016-09-01 22:46         ` Jakub Narębski
2016-09-01 22:59           ` Junio C Hamano
2016-09-09 14:27             ` Johannes Schindelin
2016-09-01  8:45     ` Johannes Schindelin
2016-08-29  8:06 ` [PATCH 14/22] sequencer: prepare for rebase -i's commit functionality Johannes Schindelin
2016-08-29 21:32   ` Junio C Hamano
2016-08-30  6:53     ` Johannes Schindelin
2016-08-30 17:32       ` Junio C Hamano
2016-08-30 18:18         ` Johannes Schindelin
2016-08-30 22:35         ` Junio C Hamano
2016-08-31  8:19           ` Johannes Schindelin
2016-08-29  8:06 ` [PATCH 15/22] sequencer: introduce a helper to read files written by scripts Johannes Schindelin
2016-08-29  9:47   ` Dennis Kaarsemaker
2016-08-29 11:08     ` Johannes Schindelin
2016-08-29  8:06 ` [PATCH 16/22] sequencer: prepare for rebase -i's GPG settings Johannes Schindelin
2016-08-31 20:10   ` Jakub Narębski [this message]
2016-08-31 20:12     ` Junio C Hamano
2016-08-31 20:29       ` Jakub Narębski
2016-08-31 20:33         ` Junio C Hamano
2016-09-01 13:35         ` Johannes Schindelin
2016-09-01 13:33       ` Johannes Schindelin
2016-09-01 13:33     ` Johannes Schindelin
2016-09-01 23:21       ` Jakub Narębski
2016-08-29  8:06 ` [PATCH 17/22] sequencer: allow editing the commit message on a case-by-case basis Johannes Schindelin
2016-08-31 20:56   ` Jakub Narębski
2016-09-01 13:40     ` Johannes Schindelin
2016-08-29  8:06 ` [PATCH 18/22] sequencer: support amending commits Johannes Schindelin
2016-08-31 21:08   ` Jakub Narębski
2016-09-01 13:42     ` Johannes Schindelin
2016-08-29  8:06 ` [PATCH 19/22] sequencer: support cleaning up commit messages Johannes Schindelin
2016-09-01 10:31   ` Jakub Narębski
2016-09-01 13:56     ` Johannes Schindelin
2016-09-01 23:31       ` Jakub Narębski
2016-08-29  8:06 ` [PATCH 20/22] sequencer: remember do_recursive_merge()'s return value Johannes Schindelin
2016-08-29  9:51   ` Dennis Kaarsemaker
2016-08-29 11:09     ` Johannes Schindelin
2016-08-29 20:32   ` Jakub Narębski
2016-08-29 21:13     ` Junio C Hamano
2016-08-29  8:06 ` [PATCH 21/22] sequencer: left-trim the lines read from the script Johannes Schindelin
2016-09-01 10:50   ` Jakub Narębski
2016-09-01 14:13     ` Johannes Schindelin
2016-09-01 17:58       ` Junio C Hamano
2016-09-09 15:08         ` Johannes Schindelin
2016-09-01 23:33       ` Jakub Narębski
2016-09-09 14:31         ` Johannes Schindelin
2016-08-29  8:06 ` [PATCH 22/22] sequencer: refactor write_message() Johannes Schindelin
2016-09-01 11:10   ` Jakub Narębski
2016-09-01 14:20     ` Johannes Schindelin
2016-09-01 23:35       ` Jakub Narębski
2016-09-09 14:40         ` Johannes Schindelin
2016-09-09 19:11           ` Jakub Narębski
2016-09-11  8:26             ` Johannes Schindelin
2016-08-29  9:56 ` [PATCH 00/22] Prepare the sequencer for the upcoming rebase -i patches Dennis Kaarsemaker
2016-08-29 11:10   ` Johannes Schindelin
2016-09-02 11:41 ` Jakub Narębski
2016-09-02 13:56   ` Johannes Schindelin
2016-09-11 10:52 ` [PATCH v2 00/25] " Johannes Schindelin
2016-09-11 10:52   ` [PATCH v2 01/25] sequencer: use static initializers for replay_opts Johannes Schindelin
2016-09-12 19:46     ` Junio C Hamano
2016-09-11 10:52   ` [PATCH v2 02/25] sequencer: use memoized sequencer directory path Johannes Schindelin
2016-09-12 19:48     ` Junio C Hamano
2016-09-11 10:52   ` [PATCH v2 03/25] sequencer: avoid unnecessary indirection Johannes Schindelin
2016-09-12 19:49     ` Junio C Hamano
2016-09-11 10:53   ` [PATCH v2 04/25] sequencer: future-proof remove_sequencer_state() Johannes Schindelin
2016-09-12 19:53     ` Junio C Hamano
2016-10-05 11:46       ` Johannes Schindelin
2016-10-05 17:41         ` Junio C Hamano
2016-09-11 10:53   ` [PATCH v2 05/25] sequencer: allow the sequencer to take custody of malloc()ed data Johannes Schindelin
2016-09-12 19:46     ` Junio C Hamano
2016-10-05 11:41       ` Johannes Schindelin
2016-10-06 19:23         ` Junio C Hamano
2016-10-06 22:40           ` Jakub Narębski
2016-10-06 22:53             ` Junio C Hamano
2016-10-08  9:11           ` Johannes Schindelin
2016-09-11 10:53   ` [PATCH v2 06/25] sequencer: release memory that was allocated when reading options Johannes Schindelin
2016-09-11 10:53   ` [PATCH v2 07/25] sequencer: future-proof read_populate_todo() Johannes Schindelin
2016-09-11 10:53   ` [PATCH v2 08/25] sequencer: completely revamp the "todo" script parsing Johannes Schindelin
2016-09-11 10:53   ` [PATCH v2 09/25] sequencer: avoid completely different messages for different actions Johannes Schindelin
2016-09-11 10:53   ` [PATCH v2 10/25] sequencer: get rid of the subcommand field Johannes Schindelin
2016-09-15 19:15     ` Junio C Hamano
2016-09-11 10:54   ` [PATCH v2 11/25] sequencer: refactor the code to obtain a short commit name Johannes Schindelin
2016-09-11 10:54   ` [PATCH v2 12/25] sequencer: remember the onelines when parsing the todo file Johannes Schindelin
2016-09-11 10:54   ` [PATCH v2 13/25] sequencer: prepare for rebase -i's commit functionality Johannes Schindelin
2016-09-11 10:54   ` [PATCH v2 14/25] sequencer: introduce a helper to read files written by scripts Johannes Schindelin
2016-09-11 10:54   ` [PATCH v2 15/25] sequencer: prepare for rebase -i's GPG settings Johannes Schindelin
2016-09-11 10:54   ` [PATCH v2 16/25] sequencer: allow editing the commit message on a case-by-case basis Johannes Schindelin
2016-09-11 10:55   ` [PATCH v2 17/25] sequencer: support amending commits Johannes Schindelin
2016-09-12 21:36     ` Junio C Hamano
2016-10-05 12:41       ` Johannes Schindelin
2016-09-11 10:55   ` [PATCH v2 18/25] sequencer: support cleaning up commit messages Johannes Schindelin
2016-09-12 21:33     ` Junio C Hamano
2016-09-11 10:55   ` [PATCH v2 19/25] sequencer: remember do_recursive_merge()'s return value Johannes Schindelin
2016-09-12 21:23     ` Junio C Hamano
2016-10-05 12:35       ` Johannes Schindelin
2016-10-05 17:43         ` Junio C Hamano
2016-09-11 10:55   ` [PATCH v2 20/25] sequencer: left-trim lines read from the script Johannes Schindelin
2016-09-11 23:39     ` Junio C Hamano
2016-09-12  8:23       ` Johannes Schindelin
2016-09-12 15:42         ` Junio C Hamano
2016-10-06 13:08           ` Johannes Schindelin
2016-10-06 16:23             ` Johannes Sixt
2016-10-06 18:41               ` Junio C Hamano
2016-10-09  8:57               ` Johannes Schindelin
2016-10-09 10:45                 ` Johannes Sixt
2016-09-11 10:55   ` [PATCH v2 21/25] sequencer: refactor write_message() Johannes Schindelin
2016-09-11 23:38     ` Junio C Hamano
2016-09-12  8:35     ` Johannes Sixt
2016-09-15 19:21       ` Junio C Hamano
2016-10-05 13:08         ` Johannes Schindelin
2016-09-11 10:55   ` [PATCH v2 22/25] sequencer: remove overzealous assumption in rebase -i mode Johannes Schindelin
2016-09-11 23:35     ` Junio C Hamano
2016-09-11 10:55   ` [PATCH v2 23/25] sequencer: mark action_name() for translation Johannes Schindelin
2016-09-11 10:55   ` [PATCH v2 24/25] sequencer: quote filenames in error messages Johannes Schindelin
2016-09-11 23:33     ` Junio C Hamano
2016-10-06 13:41       ` Johannes Schindelin
2016-09-11 10:56   ` [PATCH v2 25/25] sequencer: remove bogus hint for translators Johannes Schindelin
2016-09-11 23:30     ` Junio C Hamano
2016-10-06 14:18       ` Johannes Schindelin
2016-10-10 17:24   ` [PATCH v3 00/25] Prepare the sequencer for the upcoming rebase -i patches Johannes Schindelin
2016-10-10 17:24     ` [PATCH v3 01/25] sequencer: use static initializers for replay_opts Johannes Schindelin
2016-10-10 22:14       ` Junio C Hamano
2016-10-10 17:24     ` [PATCH v3 02/25] sequencer: use memoized sequencer directory path Johannes Schindelin
2016-10-10 17:24     ` [PATCH v3 03/25] sequencer: avoid unnecessary indirection Johannes Schindelin
2016-10-10 22:14       ` Junio C Hamano
2016-10-10 17:24     ` [PATCH v3 04/25] sequencer: future-proof remove_sequencer_state() Johannes Schindelin
2016-10-10 17:24     ` [PATCH v3 05/25] sequencer: eventually release memory allocated for the option values Johannes Schindelin
2016-10-10 22:18       ` Junio C Hamano
2016-10-11 10:07         ` Johannes Schindelin
2016-10-11 16:30         ` Junio C Hamano
2016-10-12 12:06           ` Johannes Schindelin
2016-10-12 18:20             ` Re* " Junio C Hamano
2016-10-13 10:51               ` Johannes Schindelin
2016-10-10 17:24     ` [PATCH v3 06/25] sequencer: future-proof read_populate_todo() Johannes Schindelin
2016-10-10 17:25     ` [PATCH v3 07/25] sequencer: completely revamp the "todo" script parsing Johannes Schindelin
2016-10-10 22:13       ` Junio C Hamano
2016-10-11 10:20         ` Johannes Schindelin
2016-10-11 10:22           ` Johannes Schindelin
2016-10-11 10:55             ` Johannes Schindelin
2016-10-11 16:58               ` Junio C Hamano
2016-10-11 16:54           ` Junio C Hamano
2016-10-15 17:03       ` Torsten Bögershausen
2016-10-15 17:19         ` Jeff King
2016-10-15 17:40           ` Torsten Bögershausen
2016-10-15 17:46             ` Jeff King
2016-10-16  8:09               ` Johannes Schindelin
2016-10-16 19:42                 ` Jeff King
2016-10-17  8:37                   ` Johannes Schindelin
2016-10-17  9:36                     ` Jeff King
2016-10-10 17:25     ` [PATCH v3 08/25] sequencer: strip CR from the todo script Johannes Schindelin
2016-10-11 18:54       ` Junio C Hamano
2016-10-12 11:46         ` Johannes Schindelin
2016-10-10 17:25     ` [PATCH v3 09/25] sequencer: avoid completely different messages for different actions Johannes Schindelin
2016-10-10 17:25     ` [PATCH v3 10/25] sequencer: get rid of the subcommand field Johannes Schindelin
2016-10-10 17:25     ` [PATCH v3 11/25] sequencer: refactor the code to obtain a short commit name Johannes Schindelin
2016-10-10 17:25     ` [PATCH v3 12/25] sequencer: remember the onelines when parsing the todo file Johannes Schindelin
2016-10-11 19:07       ` Junio C Hamano
2016-10-12 11:49         ` Johannes Schindelin
2016-10-12 16:24           ` Junio C Hamano
2016-10-13 10:41             ` Johannes Schindelin
2016-10-10 17:25     ` [PATCH v3 13/25] sequencer: prepare for rebase -i's commit functionality Johannes Schindelin
2016-10-11 19:17       ` Junio C Hamano
2016-10-12 12:00         ` Johannes Schindelin
2016-10-12 16:55           ` Junio C Hamano
2016-10-13 10:50             ` Johannes Schindelin
2016-10-14 16:41               ` Junio C Hamano
2016-10-10 17:25     ` [PATCH v3 14/25] sequencer: introduce a helper to read files written by scripts Johannes Schindelin
2016-10-17 17:17       ` Junio C Hamano
2016-10-18 11:42         ` Johannes Schindelin
2016-10-18 15:54           ` Junio C Hamano
2016-10-20 12:07             ` Johannes Schindelin
2016-10-10 17:25     ` [PATCH v3 15/25] sequencer: allow editing the commit message on a case-by-case basis Johannes Schindelin
2016-10-17 17:18       ` Junio C Hamano
2016-10-10 17:25     ` [PATCH v3 16/25] sequencer: support amending commits Johannes Schindelin
2016-10-17 17:22       ` Junio C Hamano
2016-10-18 11:53         ` Johannes Schindelin
2016-10-18 15:56           ` Junio C Hamano
2016-10-10 17:26     ` [PATCH v3 17/25] sequencer: support cleaning up commit messages Johannes Schindelin
2016-10-10 17:26     ` [PATCH v3 18/25] sequencer: do not try to commit when there were merge conflicts Johannes Schindelin
2016-10-10 17:26     ` [PATCH v3 19/25] sequencer: left-trim lines read from the script Johannes Schindelin
2016-10-10 17:26     ` [PATCH v3 20/25] sequencer: refactor write_message() Johannes Schindelin
2016-10-10 17:26     ` [PATCH v3 21/25] sequencer: remove overzealous assumption in rebase -i mode Johannes Schindelin
2016-10-10 17:26     ` [PATCH v3 22/25] sequencer: mark action_name() for translation Johannes Schindelin
2016-10-10 17:26     ` [PATCH v3 23/25] sequencer: quote filenames in error messages Johannes Schindelin
2016-10-10 17:26     ` [PATCH v3 24/25] sequencer: start error messages consistently with lower case Johannes Schindelin
2016-10-10 17:26     ` [PATCH v3 25/25] sequencer: mark all error messages for translation Johannes Schindelin
2016-10-12 20:46       ` Johannes Sixt
2016-10-12 21:24         ` Junio C Hamano
2016-10-13 14:56           ` Johannes Schindelin
2016-10-13 20:35             ` Johannes Sixt
2016-10-14 13:15     ` [PATCH v4 00/25] Prepare the sequencer for the upcoming rebase -i patches Johannes Schindelin
2016-10-14 13:15       ` [PATCH v4 01/25] sequencer: use static initializers for replay_opts Johannes Schindelin
2016-10-14 13:17       ` [PATCH v4 02/25] sequencer: use memoized sequencer directory path Johannes Schindelin
2016-10-14 13:17       ` [PATCH v4 03/25] sequencer: avoid unnecessary indirection Johannes Schindelin
2016-10-14 13:17       ` [PATCH v4 04/25] sequencer: future-proof remove_sequencer_state() Johannes Schindelin
2016-10-14 13:17       ` [PATCH v4 05/25] sequencer: eventually release memory allocated for the option values Johannes Schindelin
2016-10-17 19:06         ` Junio C Hamano
2016-10-18 12:03           ` Johannes Schindelin
2016-10-19  1:12             ` Junio C Hamano
2016-10-20 12:16               ` Johannes Schindelin
2016-10-14 13:17       ` [PATCH v4 06/25] sequencer: future-proof read_populate_todo() Johannes Schindelin
2016-10-14 13:17       ` [PATCH v4 07/25] sequencer: refactor the code to obtain a short commit name Johannes Schindelin
2016-10-14 13:17       ` [PATCH v4 08/25] sequencer: completely revamp the "todo" script parsing Johannes Schindelin
2016-10-17 22:33         ` Junio C Hamano
2016-10-18 12:25           ` Johannes Schindelin
2016-10-14 13:17       ` [PATCH v4 09/25] sequencer: strip CR from the todo script Johannes Schindelin
2016-10-14 13:17       ` [PATCH v4 10/25] sequencer: avoid completely different messages for different actions Johannes Schindelin
2016-10-14 13:18       ` [PATCH v4 11/25] sequencer: get rid of the subcommand field Johannes Schindelin
2016-10-14 13:18       ` [PATCH v4 12/25] sequencer: remember the onelines when parsing the todo file Johannes Schindelin
2016-10-14 13:18       ` [PATCH v4 13/25] sequencer: prepare for rebase -i's commit functionality Johannes Schindelin
2016-10-14 13:18       ` [PATCH v4 14/25] sequencer: introduce a helper to read files written by scripts Johannes Schindelin
2016-10-14 13:18       ` [PATCH v4 15/25] sequencer: allow editing the commit message on a case-by-case basis Johannes Schindelin
2016-10-14 13:18       ` [PATCH v4 16/25] sequencer: support amending commits Johannes Schindelin
2016-10-14 13:18       ` [PATCH v4 17/25] sequencer: support cleaning up commit messages Johannes Schindelin
2016-10-20 20:06         ` Junio C Hamano
2016-10-14 13:18       ` [PATCH v4 18/25] sequencer: do not try to commit when there were merge conflicts Johannes Schindelin
2016-10-20 20:11         ` Junio C Hamano
2016-10-21 11:10           ` Johannes Schindelin
2016-10-14 13:18       ` [PATCH v4 19/25] sequencer: left-trim lines read from the script Johannes Schindelin
2016-10-14 13:18       ` [PATCH v4 20/25] sequencer: refactor write_message() Johannes Schindelin
2016-10-20 20:22         ` Junio C Hamano
2016-10-20 20:26           ` Junio C Hamano
2016-10-21 11:43             ` Johannes Schindelin
2016-10-21 15:40               ` Junio C Hamano
2016-10-23  9:29                 ` Johannes Schindelin
2016-10-14 13:18       ` [PATCH v4 21/25] sequencer: remove overzealous assumption in rebase -i mode Johannes Schindelin
2016-10-14 13:19       ` [PATCH v4 22/25] sequencer: mark action_name() for translation Johannes Schindelin
2016-10-14 13:19       ` [PATCH v4 23/25] sequencer: quote filenames in error messages Johannes Schindelin
2016-10-20 20:27         ` Junio C Hamano
2016-10-20 20:28           ` Junio C Hamano
2016-10-14 13:19       ` [PATCH v4 24/25] sequencer: start error messages consistently with lower case Johannes Schindelin
2016-10-14 13:19       ` [PATCH v4 25/25] sequencer: mark all error messages for translation Johannes Schindelin
2016-10-17 19:08       ` [PATCH v4 00/25] Prepare the sequencer for the upcoming rebase -i patches Junio C Hamano
2016-10-21 12:23       ` [PATCH v5 00/27] " Johannes Schindelin
2016-10-21 12:23         ` [PATCH v5 01/27] sequencer: use static initializers for replay_opts Johannes Schindelin
2016-10-21 12:23         ` [PATCH v5 02/27] sequencer: use memoized sequencer directory path Johannes Schindelin
2016-10-21 12:24         ` [PATCH v5 03/27] sequencer: avoid unnecessary indirection Johannes Schindelin
2016-10-21 12:24         ` [PATCH v5 04/27] sequencer: future-proof remove_sequencer_state() Johannes Schindelin
2016-10-21 12:24         ` [PATCH v5 05/27] sequencer: plug memory leaks for the option values Johannes Schindelin
2016-10-21 12:24         ` [PATCH v5 06/27] sequencer: future-proof read_populate_todo() Johannes Schindelin
2016-10-21 12:24         ` [PATCH v5 07/27] sequencer: refactor the code to obtain a short commit name Johannes Schindelin
2016-10-21 12:24         ` [PATCH v5 08/27] sequencer: completely revamp the "todo" script parsing Johannes Schindelin
2016-11-06 14:05           ` Lars Schneider
2016-10-21 12:24         ` [PATCH v5 09/27] sequencer: strip CR from the todo script Johannes Schindelin
2016-10-21 12:24         ` [PATCH v5 10/27] sequencer: avoid completely different messages for different actions Johannes Schindelin
2016-10-21 12:24         ` [PATCH v5 11/27] sequencer: get rid of the subcommand field Johannes Schindelin
2016-10-21 12:25         ` [PATCH v5 12/27] sequencer: remember the onelines when parsing the todo file Johannes Schindelin
2016-10-21 12:25         ` [PATCH v5 13/27] sequencer: prepare for rebase -i's commit functionality Johannes Schindelin
2016-10-21 12:25         ` [PATCH v5 14/27] sequencer: introduce a helper to read files written by scripts Johannes Schindelin
2016-10-21 12:25         ` [PATCH v5 15/27] sequencer: allow editing the commit message on a case-by-case basis Johannes Schindelin
2016-10-21 12:25         ` [PATCH v5 16/27] sequencer: support amending commits Johannes Schindelin
2016-10-21 12:25         ` [PATCH v5 17/27] sequencer: support cleaning up commit messages Johannes Schindelin
2016-10-21 12:25         ` [PATCH v5 18/27] sequencer: left-trim lines read from the script Johannes Schindelin
2016-10-21 12:25         ` [PATCH v5 19/27] sequencer: stop releasing the strbuf in write_message() Johannes Schindelin
2016-10-21 18:30           ` Junio C Hamano
2016-10-21 12:26         ` [PATCH v5 20/27] sequencer: roll back lock file if write_message() failed Johannes Schindelin
2016-10-21 12:26         ` [PATCH v5 21/27] sequencer: refactor write_message() to take a pointer/length Johannes Schindelin
2016-10-21 12:26         ` [PATCH v5 22/27] sequencer: teach write_message() to append an optional LF Johannes Schindelin
2016-10-21 18:32           ` Junio C Hamano
2016-10-23  9:34             ` Johannes Schindelin
2016-10-21 12:26         ` [PATCH v5 23/27] sequencer: remove overzealous assumption in rebase -i mode Johannes Schindelin
2016-10-21 12:26         ` [PATCH v5 24/27] sequencer: mark action_name() for translation Johannes Schindelin
2016-10-21 12:26         ` [PATCH v5 25/27] sequencer: quote filenames in error messages Johannes Schindelin
2016-10-21 12:26         ` [PATCH v5 26/27] sequencer: start error messages consistently with lower case Johannes Schindelin
2016-10-21 12:26         ` [PATCH v5 27/27] sequencer: mark all error messages for translation Johannes Schindelin
2016-10-21 18:40         ` [PATCH v5 00/27] Prepare the sequencer for the upcoming rebase -i patches Junio C Hamano
2016-10-23  9:50           ` Johannes Schindelin
2016-10-24 20:00             ` Junio C Hamano
2016-10-22 17:11         ` Junio C Hamano
2016-10-23  9:54           ` Johannes Schindelin
2016-10-23  9:58             ` Johannes Schindelin
2016-10-24 12:24             ` Max Horn
2016-10-24 14:02               ` Johannes Schindelin
2016-10-24 20:03             ` Junio C Hamano
2016-10-24 19:36           ` Stefan Beller
2016-10-24 20:16             ` Junio C Hamano

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=104de15c-77e8-9474-9579-4934ca8a4323@gmail.com \
    --to=jnareb@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=johannes.schindelin@gmx.de \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).