All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Johannes Schindelin <johannes.schindelin@gmx.de>
Cc: git@vger.kernel.org, Kevin Daudt <me@ikke.info>,
	Dennis Kaarsemaker <dennis@kaarsemaker.net>
Subject: Re: [PATCH v2 01/34] sequencer: support a new action: 'interactive rebase'
Date: Tue, 13 Dec 2016 12:32:07 -0800	[thread overview]
Message-ID: <xmqqk2b31sfs.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <297140020a7312af03136848dcdd0353ee3abdfe.1481642927.git.johannes.schindelin@gmx.de> (Johannes Schindelin's message of "Tue, 13 Dec 2016 16:29:14 +0100 (CET)")

Johannes Schindelin <johannes.schindelin@gmx.de> writes:

>  static inline int is_rebase_i(const struct replay_opts *opts)
>  {
> -	return 0;
> +	return opts->action == REPLAY_INTERACTIVE_REBASE;
>  }
>  
>  static const char *get_dir(const struct replay_opts *opts)
>  {
> +	if (is_rebase_i(opts))
> +		return rebase_path();
>  	return git_path_seq_dir();
>  }
>  
>  static const char *get_todo_path(const struct replay_opts *opts)
>  {
> +	if (is_rebase_i(opts))
> +		return rebase_path_todo();
>  	return git_path_todo_file();
>  }
>  
> @@ -168,7 +179,15 @@ int sequencer_remove_state(struct replay_opts *opts)
>  
>  static const char *action_name(const struct replay_opts *opts)
>  {
> -	return opts->action == REPLAY_REVERT ? N_("revert") : N_("cherry-pick");
> +	switch (opts->action) {
> +	case REPLAY_REVERT:
> +		return N_("revert");
> +	case REPLAY_PICK:
> +		return N_("cherry-pick");
> +	case REPLAY_INTERACTIVE_REBASE:
> +		return N_("rebase -i");
> +	}
> +	die(_("Unknown action: %d"), opts->action);
>  }

This case statement which looks perfectly sensible---it says that
there are three equal modes the subsystem operates in.  

This is just a mental note and not a suggestion to change anything
immediately, but it makes me wonder if git_dir/get_todo_path would
also want to do so, moving towards retiring is_rebase_i() which is
"everything else vs one oddball which is rebase-i" mindset.

> @@ -395,7 +414,10 @@ static int do_recursive_merge(struct commit *base, struct commit *next,
>  
>  	if (active_cache_changed &&
>  	    write_locked_index(&the_index, &index_lock, COMMIT_LOCK))
> -		/* TRANSLATORS: %s will be "revert" or "cherry-pick" */
> +		/*
> +		 * TRANSLATORS: %s will be "revert", "cherry-pick" or
> +		 * "rebase -i".
> +		 */

IIRC, the "TRANSLATORS:" comment has to deviate from our coding
style due to tool limitation and has to be done like this:

> +		/* TRANSLATORS: %s will be "revert", "cherry-pick" or
> +		 * "rebase -i".
> +		 */

> @@ -1204,6 +1226,9 @@ static int save_todo(struct todo_list *todo_list, struct replay_opts *opts)
>  	const char *todo_path = get_todo_path(opts);
>  	int next = todo_list->current, offset, fd;
>  
> +	if (is_rebase_i(opts))
> +		next++;
> +

This is because...?  Everybody else counts 0-based while rebase-i
counts from 1 or something?

>  	fd = hold_lock_file_for_update(&todo_lock, todo_path, 0);
>  	if (fd < 0)
>  		return error_errno(_("could not lock '%s'"), todo_path);

Everything else in the patch is understandable.  This bit isn't
without explanation, at least to me.

  reply	other threads:[~2016-12-13 20:46 UTC|newest]

Thread overview: 212+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-31  8:53 [PATCH 00/34] Teach the sequencer to act as rebase -i's backend Johannes Schindelin
2016-08-31  8:54 ` [PATCH 01/34] sequencer: support a new action: 'interactive rebase' Johannes Schindelin
2016-09-02 21:13   ` Kevin Daudt
2016-09-03  6:57     ` Johannes Schindelin
2016-08-31  8:54 ` [PATCH 02/34] sequencer (rebase -i): implement the 'noop' command Johannes Schindelin
2016-08-31  8:54 ` [PATCH 03/34] sequencer (rebase -i): implement the 'edit' command Johannes Schindelin
2016-08-31  8:54 ` [PATCH 04/34] sequencer (rebase -i): implement the 'exec' command Johannes Schindelin
2016-08-31  8:54 ` [PATCH 05/34] sequencer (rebase -i): learn about the 'verbose' mode Johannes Schindelin
2016-08-31 18:39   ` Dennis Kaarsemaker
2016-08-31 20:36     ` Johannes Schindelin
2016-08-31  8:54 ` [PATCH 06/34] sequencer (rebase -i): write the 'done' file Johannes Schindelin
2016-08-31 18:39   ` Dennis Kaarsemaker
2016-09-01  8:51     ` Johannes Schindelin
2016-08-31  8:54 ` [PATCH 07/34] sequencer (rebase -i): add support for the 'fixup' and 'squash' commands Johannes Schindelin
2016-09-01  8:33   ` Dennis Kaarsemaker
2016-09-01 15:17     ` Johannes Schindelin
2016-09-01 16:19       ` Dennis Kaarsemaker
2016-09-02  7:13         ` Johannes Schindelin
2016-09-02 12:06           ` Dennis Kaarsemaker
2016-09-02 14:22             ` Johannes Schindelin
2016-09-02 17:04               ` Dennis Kaarsemaker
2016-09-01 18:15     ` Junio C Hamano
2016-09-02  7:15       ` Johannes Schindelin
2016-08-31  8:54 ` [PATCH 08/34] sequencer (rebase -i): implement the short commands Johannes Schindelin
2016-08-31  8:54 ` [PATCH 09/34] sequencer (rebase -i): write an author-script file Johannes Schindelin
2016-08-31  8:54 ` [PATCH 10/34] sequencer (rebase -i): allow continuing with staged changes Johannes Schindelin
2016-08-31  8:54 ` [PATCH 11/34] sequencer (rebase -i): remove CHERRY_PICK_HEAD when no longer needed Johannes Schindelin
2016-08-31  8:55 ` [PATCH 12/34] sequencer (rebase -i): skip some revert/cherry-pick specific code path Johannes Schindelin
2016-08-31  8:55 ` [PATCH 13/34] sequencer (rebase -i): the todo can be empty when continuing Johannes Schindelin
2016-08-31  8:55 ` [PATCH 14/34] sequencer (rebase -i): update refs after a successful rebase Johannes Schindelin
2016-08-31  8:55 ` [PATCH 15/34] sequencer (rebase -i): leave a patch upon error Johannes Schindelin
2016-08-31 18:39   ` Dennis Kaarsemaker
2016-09-01 13:03     ` Johannes Schindelin
2016-08-31  8:55 ` [PATCH 16/34] sequencer (rebase -i): implement the 'reword' command Johannes Schindelin
2016-08-31  8:55 ` [PATCH 17/34] sequencer (rebase -i): allow fast-forwarding for edit/reword Johannes Schindelin
2016-08-31  8:55 ` [PATCH 18/34] sequencer (rebase -i): refactor setting the reflog message Johannes Schindelin
2016-08-31  8:55 ` [PATCH 19/34] sequencer (rebase -i): set the reflog message consistently Johannes Schindelin
2016-08-31  8:55 ` [PATCH 20/34] sequencer (rebase -i): copy commit notes at end Johannes Schindelin
2016-09-01  7:20   ` Dennis Kaarsemaker
2016-09-01 14:57     ` Johannes Schindelin
2016-08-31  8:55 ` [PATCH 21/34] sequencer (rebase -i): record interrupted commits in rewritten, too Johannes Schindelin
2016-08-31  8:55 ` [PATCH 22/34] sequencer (rebase -i): run the post-rewrite hook, if needed Johannes Schindelin
2016-08-31  8:55 ` [PATCH 23/34] sequencer (rebase -i): respect the rebase.autostash setting Johannes Schindelin
2016-08-31  8:55 ` [PATCH 24/34] sequencer (rebase -i): respect strategy/strategy_opts settings Johannes Schindelin
2016-08-31  8:56 ` [PATCH 25/34] sequencer (rebase -i): allow rescheduling commands Johannes Schindelin
2016-08-31  8:56 ` [PATCH 26/34] sequencer (rebase -i): implement the 'drop' command Johannes Schindelin
2016-08-31  8:56 ` [PATCH 27/34] sequencer (rebase -i): differentiate between comments and 'noop' Johannes Schindelin
2016-09-01  8:33   ` Dennis Kaarsemaker
2016-09-01 15:32     ` Johannes Schindelin
2016-09-01 16:15       ` Dennis Kaarsemaker
2016-09-02  7:32         ` Johannes Schindelin
2016-08-31  8:56 ` [PATCH 28/34] run_command_opt(): optionally hide stderr when the command succeeds Johannes Schindelin
2016-08-31  8:56 ` [PATCH 29/34] sequencer (rebase -i): show only failed `git commit`'s output Johannes Schindelin
2016-08-31  8:56 ` [PATCH 30/34] sequencer (rebase -i): show only failed cherry-picks' output Johannes Schindelin
2016-08-31  8:56 ` [PATCH 31/34] sequencer (rebase -i): suggest --edit-todo upon unknown command Johannes Schindelin
2016-08-31  8:56 ` [PATCH 32/34] sequencer (rebase -i): show the progress Johannes Schindelin
2016-09-01  8:33   ` Dennis Kaarsemaker
2016-09-01 15:19     ` Johannes Schindelin
2016-08-31  8:56 ` [PATCH 33/34] sequencer (rebase -i): write the progress into files Johannes Schindelin
2016-08-31  8:56 ` [PATCH 34/34] sequencer (rebase -i): write out the final message Johannes Schindelin
2016-08-31 18:39 ` [PATCH 00/34] Teach the sequencer to act as rebase -i's backend Dennis Kaarsemaker
2016-09-01 13:05   ` Johannes Schindelin
2016-12-13 15:29 ` [PATCH v2 " Johannes Schindelin
2016-12-13 15:29   ` [PATCH v2 01/34] sequencer: support a new action: 'interactive rebase' Johannes Schindelin
2016-12-13 20:32     ` Junio C Hamano [this message]
2016-12-19 13:33       ` Johannes Schindelin
2016-12-14 19:29     ` Junio C Hamano
2016-12-17 20:23       ` Stephan Beyer
2016-12-19 14:25         ` Johannes Schindelin
2016-12-19 21:27           ` Stephan Beyer
2016-12-13 15:29   ` [PATCH v2 02/34] sequencer (rebase -i): implement the 'noop' command Johannes Schindelin
2016-12-13 20:38     ` Junio C Hamano
2016-12-13 20:48       ` Linus Torvalds
2016-12-13 21:54         ` Junio C Hamano
2016-12-19 12:51           ` Johannes Schindelin
2016-12-19 18:31             ` Junio C Hamano
2016-12-19 13:37       ` Johannes Schindelin
2016-12-13 15:29   ` [PATCH v2 03/34] sequencer (rebase -i): implement the 'edit' command Johannes Schindelin
2016-12-13 21:30     ` Junio C Hamano
2016-12-19 13:46       ` Johannes Schindelin
2016-12-19 18:47         ` Junio C Hamano
2016-12-19 18:48         ` Junio C Hamano
2016-12-13 15:29   ` [PATCH v2 04/34] sequencer (rebase -i): implement the 'exec' command Johannes Schindelin
2016-12-13 21:35     ` Junio C Hamano
2016-12-19 14:06       ` Johannes Schindelin
2016-12-13 15:29   ` [PATCH v2 05/34] sequencer (rebase -i): learn about the 'verbose' mode Johannes Schindelin
2016-12-13 21:51     ` Junio C Hamano
2016-12-14  6:59       ` Junio C Hamano
2017-01-02 15:11       ` Johannes Schindelin
2017-01-07 21:48         ` Junio C Hamano
2017-01-08  1:57           ` Junio C Hamano
2016-12-13 15:29   ` [PATCH v2 06/34] sequencer (rebase -i): write the 'done' file Johannes Schindelin
2016-12-13 21:52     ` Junio C Hamano
2016-12-13 15:30   ` [PATCH v2 07/34] sequencer (rebase -i): add support for the 'fixup' and 'squash' commands Johannes Schindelin
2016-12-15 18:42     ` Junio C Hamano
2016-12-15 18:56       ` Jeff King
2016-12-19 16:59         ` Johannes Schindelin
2016-12-19 17:19           ` Jeff King
2016-12-19 16:58       ` Johannes Schindelin
2016-12-15 19:03     ` Jeff King
2016-12-15 19:07       ` Stefan Beller
2016-12-15 19:20         ` Jeff King
2016-12-15 19:27           ` Stefan Beller
2016-12-19 17:14       ` Johannes Schindelin
2016-12-13 15:30   ` [PATCH v2 08/34] sequencer (rebase -i): implement the short commands Johannes Schindelin
2016-12-15 18:43     ` Junio C Hamano
2016-12-13 15:30   ` [PATCH v2 09/34] sequencer (rebase -i): write an author-script file Johannes Schindelin
2016-12-15 18:50     ` Junio C Hamano
2016-12-19 17:06       ` Johannes Schindelin
2016-12-20  1:32         ` Junio C Hamano
2016-12-20 23:46           ` Junio C Hamano
2016-12-13 15:30   ` [PATCH v2 10/34] sequencer (rebase -i): allow continuing with staged changes Johannes Schindelin
2016-12-15 19:08     ` Junio C Hamano
2016-12-13 15:30   ` [PATCH v2 11/34] sequencer (rebase -i): remove CHERRY_PICK_HEAD when no longer needed Johannes Schindelin
2016-12-16 19:13     ` Junio C Hamano
2016-12-19 17:22       ` Johannes Schindelin
2016-12-13 15:30   ` [PATCH v2 12/34] sequencer (rebase -i): skip some revert/cherry-pick specific code path Johannes Schindelin
2016-12-13 15:30   ` [PATCH v2 13/34] sequencer (rebase -i): the todo can be empty when continuing Johannes Schindelin
2016-12-13 15:30   ` [PATCH v2 14/34] sequencer (rebase -i): update refs after a successful rebase Johannes Schindelin
2016-12-16 19:19     ` Junio C Hamano
2016-12-19 17:33       ` Johannes Schindelin
2016-12-13 15:31   ` [PATCH v2 15/34] sequencer (rebase -i): leave a patch upon error Johannes Schindelin
2016-12-16 19:23     ` Junio C Hamano
2016-12-13 15:31   ` [PATCH v2 16/34] sequencer (rebase -i): implement the 'reword' command Johannes Schindelin
2016-12-13 15:31   ` [PATCH v2 17/34] sequencer (rebase -i): allow fast-forwarding for edit/reword Johannes Schindelin
2016-12-13 15:31   ` [PATCH v2 18/34] sequencer (rebase -i): refactor setting the reflog message Johannes Schindelin
2016-12-16 19:28     ` Junio C Hamano
2016-12-13 15:31   ` [PATCH v2 19/34] sequencer (rebase -i): set the reflog message consistently Johannes Schindelin
2016-12-13 15:31   ` [PATCH v2 20/34] sequencer (rebase -i): copy commit notes at end Johannes Schindelin
2016-12-16 19:38     ` Junio C Hamano
2017-01-02 14:51       ` Johannes Schindelin
2016-12-13 15:31   ` [PATCH v2 21/34] sequencer (rebase -i): record interrupted commits in rewritten, too Johannes Schindelin
2016-12-13 15:31   ` [PATCH v2 22/34] sequencer (rebase -i): run the post-rewrite hook, if needed Johannes Schindelin
2016-12-13 15:31   ` [PATCH v2 23/34] sequencer (rebase -i): respect the rebase.autostash setting Johannes Schindelin
2016-12-13 15:31   ` [PATCH v2 24/34] sequencer (rebase -i): respect strategy/strategy_opts settings Johannes Schindelin
2016-12-19 18:58     ` Junio C Hamano
2016-12-13 15:31   ` [PATCH v2 25/34] sequencer (rebase -i): allow rescheduling commands Johannes Schindelin
2016-12-13 15:31   ` [PATCH v2 26/34] sequencer (rebase -i): implement the 'drop' command Johannes Schindelin
2016-12-13 15:31   ` [PATCH v2 27/34] sequencer (rebase -i): differentiate between comments and 'noop' Johannes Schindelin
2016-12-19 19:04     ` Junio C Hamano
2016-12-13 15:32   ` [PATCH v2 28/34] run_command_opt(): optionally hide stderr when the command succeeds Johannes Schindelin
2016-12-14  8:34     ` Johannes Sixt
2016-12-14 12:53       ` Jeff King
2016-12-14 13:06         ` Jeff King
2016-12-14 19:17           ` Johannes Sixt
2017-01-02 14:38             ` Johannes Schindelin
2016-12-13 15:32   ` [PATCH v2 29/34] sequencer (rebase -i): show only failed `git commit`'s output Johannes Schindelin
2016-12-13 15:32   ` [PATCH v2 30/34] sequencer (rebase -i): show only failed cherry-picks' output Johannes Schindelin
2016-12-13 15:32   ` [PATCH v2 31/34] sequencer (rebase -i): suggest --edit-todo upon unknown command Johannes Schindelin
2016-12-13 15:32   ` [PATCH v2 32/34] sequencer (rebase -i): show the progress Johannes Schindelin
2016-12-19 19:18     ` Junio C Hamano
2016-12-13 15:32   ` [PATCH v2 33/34] sequencer (rebase -i): write the progress into files Johannes Schindelin
2016-12-13 15:32   ` [PATCH v2 34/34] sequencer (rebase -i): write out the final message Johannes Schindelin
2016-12-13 19:42   ` [PATCH v2 00/34] Teach the sequencer to act as rebase -i's backend Junio C Hamano
2016-12-19 13:05     ` Johannes Schindelin
2016-12-14  7:08   ` Johannes Sixt
2016-12-19 14:09     ` Johannes Schindelin
2017-01-02 15:25   ` [PATCH v3 00/38] " Johannes Schindelin
2017-01-02 15:26     ` [PATCH v3 01/38] sequencer: avoid unnecessary curly braces Johannes Schindelin
2017-01-12 18:35       ` Junio C Hamano
2017-01-14 17:57         ` Johannes Schindelin
2017-01-14 18:05           ` Jeff King
2017-01-16  4:10             ` Jacob Keller
2017-01-02 15:26     ` [PATCH v3 02/38] sequencer: move "else" keyword onto the same line as preceding brace Johannes Schindelin
2017-01-12 18:49       ` Junio C Hamano
2017-01-02 15:26     ` [PATCH v3 03/38] sequencer: use a helper to find the commit message Johannes Schindelin
2017-01-12 18:36       ` Junio C Hamano
2017-01-02 15:26     ` [PATCH v3 04/38] sequencer: support a new action: 'interactive rebase' Johannes Schindelin
2017-01-02 15:26     ` [PATCH v3 05/38] sequencer (rebase -i): implement the 'noop' command Johannes Schindelin
2017-01-02 15:26     ` [PATCH v3 06/38] sequencer (rebase -i): implement the 'edit' command Johannes Schindelin
2017-01-12 19:00       ` Junio C Hamano
2017-01-14 17:56         ` Johannes Schindelin
2017-01-02 15:26     ` [PATCH v3 07/38] sequencer (rebase -i): implement the 'exec' command Johannes Schindelin
2017-01-02 15:26     ` [PATCH v3 08/38] sequencer (rebase -i): learn about the 'verbose' mode Johannes Schindelin
2017-01-02 15:27     ` [PATCH v3 09/38] sequencer (rebase -i): write the 'done' file Johannes Schindelin
2017-01-02 15:27     ` [PATCH v3 10/38] sequencer (rebase -i): add support for the 'fixup' and 'squash' commands Johannes Schindelin
2017-01-02 15:27     ` [PATCH v3 11/38] sequencer (rebase -i): implement the short commands Johannes Schindelin
2017-01-02 15:27     ` [PATCH v3 12/38] sequencer (rebase -i): write an author-script file Johannes Schindelin
2017-01-02 15:27     ` [PATCH v3 13/38] sequencer (rebase -i): allow continuing with staged changes Johannes Schindelin
2017-01-02 15:27     ` [PATCH v3 14/38] sequencer (rebase -i): remove CHERRY_PICK_HEAD when no longer needed Johannes Schindelin
2017-01-02 15:27     ` [PATCH v3 15/38] sequencer (rebase -i): skip some revert/cherry-pick specific code path Johannes Schindelin
2017-01-02 15:27     ` [PATCH v3 16/38] sequencer (rebase -i): the todo can be empty when continuing Johannes Schindelin
2017-01-02 15:27     ` [PATCH v3 17/38] sequencer (rebase -i): update refs after a successful rebase Johannes Schindelin
2017-01-02 15:27     ` [PATCH v3 18/38] sequencer (rebase -i): leave a patch upon error Johannes Schindelin
2017-01-02 15:28     ` [PATCH v3 19/38] sequencer (rebase -i): implement the 'reword' command Johannes Schindelin
2017-01-02 15:28     ` [PATCH v3 20/38] sequencer (rebase -i): allow fast-forwarding for edit/reword Johannes Schindelin
2017-01-02 15:28     ` [PATCH v3 21/38] sequencer (rebase -i): refactor setting the reflog message Johannes Schindelin
2017-01-02 15:28     ` [PATCH v3 22/38] sequencer (rebase -i): set the reflog message consistently Johannes Schindelin
2017-01-02 15:28     ` [PATCH v3 23/38] sequencer (rebase -i): copy commit notes at end Johannes Schindelin
2017-01-02 15:28     ` [PATCH v3 24/38] sequencer (rebase -i): record interrupted commits in rewritten, too Johannes Schindelin
2017-01-02 15:28     ` [PATCH v3 25/38] sequencer (rebase -i): run the post-rewrite hook, if needed Johannes Schindelin
2017-01-02 15:28     ` [PATCH v3 26/38] sequencer (rebase -i): respect the rebase.autostash setting Johannes Schindelin
2017-01-02 15:28     ` [PATCH v3 27/38] sequencer (rebase -i): respect strategy/strategy_opts settings Johannes Schindelin
2017-01-02 15:28     ` [PATCH v3 28/38] sequencer (rebase -i): allow rescheduling commands Johannes Schindelin
2017-01-02 15:34     ` [PATCH v3 29/38] sequencer (rebase -i): implement the 'drop' command Johannes Schindelin
2017-01-02 15:34     ` [PATCH v3 30/38] sequencer (rebase -i): differentiate between comments and 'noop' Johannes Schindelin
2017-01-02 15:35     ` [PATCH v3 31/38] sequencer: make reading author-script more elegant Johannes Schindelin
2017-01-02 15:35     ` [PATCH v3 32/38] sequencer: use run_command() directly Johannes Schindelin
2017-01-02 15:35     ` [PATCH v3 33/38] sequencer (rebase -i): show only failed `git commit`'s output Johannes Schindelin
2017-01-02 15:35     ` [PATCH v3 34/38] sequencer (rebase -i): show only failed cherry-picks' output Johannes Schindelin
2017-01-02 15:35     ` [PATCH v3 35/38] sequencer (rebase -i): suggest --edit-todo upon unknown command Johannes Schindelin
2017-01-02 15:35     ` [PATCH v3 36/38] sequencer (rebase -i): show the progress Johannes Schindelin
2017-01-02 15:36     ` [PATCH v3 37/38] sequencer (rebase -i): write the progress into files Johannes Schindelin
2017-01-02 15:36     ` [PATCH v3 38/38] sequencer (rebase -i): write out the final message Johannes Schindelin
2017-01-09 22:26     ` [PATCH v3 00/38] Teach the sequencer to act as rebase -i's backend Junio C Hamano
2017-01-09 23:02       ` Junio C Hamano
2017-01-14 18:04       ` Johannes Schindelin
2017-01-15  2:50         ` Junio C Hamano
2017-01-14 18:08       ` Johannes Schindelin
2017-01-15  7:47         ` Junio C Hamano
2017-01-16 10:45           ` Johannes Schindelin
2017-01-17 19:50             ` 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

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

  git send-email \
    --in-reply-to=xmqqk2b31sfs.fsf@gitster.mtv.corp.google.com \
    --to=gitster@pobox.com \
    --cc=dennis@kaarsemaker.net \
    --cc=git@vger.kernel.org \
    --cc=johannes.schindelin@gmx.de \
    --cc=me@ikke.info \
    /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.