git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Ezekiel Newren via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Elijah Newren" <newren@gmail.com>,
	"brian m. carlson" <sandals@crustytoothpaste.net>,
	"Taylor Blau" <me@ttaylorr.com>,
	"Christian Brabandt" <cb@256bit.org>,
	"Phillip Wood" <phillip.wood123@gmail.com>,
	"Eli Schwartz" <eschwartz@gentoo.org>,
	"Haelwenn (lanodan) Monnier" <contact@hacktivis.me>,
	"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
	"Matthias Aßhauer" <mha1993@live.de>,
	"Patrick Steinhardt" <ps@pks.im>, "Sam James" <sam@gentoo.org>,
	"Collin Funk" <collin.funk1@gmail.com>,
	"Mike Hommey" <mh@glandium.org>,
	"Pierre-Emmanuel Patry" <pierre-emmanuel.patry@embecosm.com>,
	"Ben Knoble" <ben.knoble@gmail.com>,
	"Ramsay Jones" <ramsay@ramsayjones.plus.com>,
	"Ezekiel Newren" <ezekielnewren@gmail.com>,
	"Ezekiel Newren" <ezekielnewren@gmail.com>
Subject: [PATCH v3 07/15] xdiff/xprepare: remove superfluous forward declarations
Date: Sat, 23 Aug 2025 03:55:48 +0000	[thread overview]
Message-ID: <d4bed95463216668e7c024e6186ca4574c7114dc.1755921357.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1980.v3.git.git.1755921356.gitgitgadget@gmail.com>

From: Ezekiel Newren <ezekielnewren@gmail.com>

Move xdl_prepare_env() later in the file to avoid the need
for forward declarations.

Signed-off-by: Ezekiel Newren <ezekielnewren@gmail.com>
---
 xdiff/xprepare.c | 116 ++++++++++++++++++++---------------------------
 1 file changed, 50 insertions(+), 66 deletions(-)

diff --git a/xdiff/xprepare.c b/xdiff/xprepare.c
index e1d4017b2dde..a45c5ee208c8 100644
--- a/xdiff/xprepare.c
+++ b/xdiff/xprepare.c
@@ -53,21 +53,6 @@ typedef struct s_xdlclassifier {
 
 
 
-static int xdl_init_classifier(xdlclassifier_t *cf, long size, long flags);
-static void xdl_free_classifier(xdlclassifier_t *cf);
-static int xdl_classify_record(unsigned int pass, xdlclassifier_t *cf, xrecord_t **rhash,
-			       unsigned int hbits, xrecord_t *rec);
-static int xdl_prepare_ctx(unsigned int pass, mmfile_t *mf, long narec, xpparam_t const *xpp,
-			   xdlclassifier_t *cf, xdfile_t *xdf);
-static void xdl_free_ctx(xdfile_t *xdf);
-static int xdl_clean_mmatch(char const *dis, long i, long s, long e);
-static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xdf2);
-static int xdl_trim_ends(xdfile_t *xdf1, xdfile_t *xdf2);
-static int xdl_optimize_ctxs(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xdf2);
-
-
-
-
 static int xdl_init_classifier(xdlclassifier_t *cf, long size, long flags) {
 	cf->flags = flags;
 
@@ -242,57 +227,6 @@ static void xdl_free_ctx(xdfile_t *xdf) {
 }
 
 
-int xdl_prepare_env(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
-		    xdfenv_t *xe) {
-	long enl1, enl2, sample;
-	xdlclassifier_t cf;
-
-	memset(&cf, 0, sizeof(cf));
-
-	/*
-	 * For histogram diff, we can afford a smaller sample size and
-	 * thus a poorer estimate of the number of lines, as the hash
-	 * table (rhash) won't be filled up/grown. The number of lines
-	 * (nrecs) will be updated correctly anyway by
-	 * xdl_prepare_ctx().
-	 */
-	sample = (XDF_DIFF_ALG(xpp->flags) == XDF_HISTOGRAM_DIFF
-		  ? XDL_GUESS_NLINES2 : XDL_GUESS_NLINES1);
-
-	enl1 = xdl_guess_lines(mf1, sample) + 1;
-	enl2 = xdl_guess_lines(mf2, sample) + 1;
-
-	if (xdl_init_classifier(&cf, enl1 + enl2 + 1, xpp->flags) < 0)
-		return -1;
-
-	if (xdl_prepare_ctx(1, mf1, enl1, xpp, &cf, &xe->xdf1) < 0) {
-
-		xdl_free_classifier(&cf);
-		return -1;
-	}
-	if (xdl_prepare_ctx(2, mf2, enl2, xpp, &cf, &xe->xdf2) < 0) {
-
-		xdl_free_ctx(&xe->xdf1);
-		xdl_free_classifier(&cf);
-		return -1;
-	}
-
-	if ((XDF_DIFF_ALG(xpp->flags) != XDF_PATIENCE_DIFF) &&
-	    (XDF_DIFF_ALG(xpp->flags) != XDF_HISTOGRAM_DIFF) &&
-	    xdl_optimize_ctxs(&cf, &xe->xdf1, &xe->xdf2) < 0) {
-
-		xdl_free_ctx(&xe->xdf2);
-		xdl_free_ctx(&xe->xdf1);
-		xdl_free_classifier(&cf);
-		return -1;
-	}
-
-	xdl_free_classifier(&cf);
-
-	return 0;
-}
-
-
 void xdl_free_env(xdfenv_t *xe) {
 
 	xdl_free_ctx(&xe->xdf2);
@@ -460,3 +394,53 @@ static int xdl_optimize_ctxs(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xdf2
 
 	return 0;
 }
+
+int xdl_prepare_env(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
+		    xdfenv_t *xe) {
+	long enl1, enl2, sample;
+	xdlclassifier_t cf;
+
+	memset(&cf, 0, sizeof(cf));
+
+	/*
+	 * For histogram diff, we can afford a smaller sample size and
+	 * thus a poorer estimate of the number of lines, as the hash
+	 * table (rhash) won't be filled up/grown. The number of lines
+	 * (nrecs) will be updated correctly anyway by
+	 * xdl_prepare_ctx().
+	 */
+	sample = (XDF_DIFF_ALG(xpp->flags) == XDF_HISTOGRAM_DIFF
+		  ? XDL_GUESS_NLINES2 : XDL_GUESS_NLINES1);
+
+	enl1 = xdl_guess_lines(mf1, sample) + 1;
+	enl2 = xdl_guess_lines(mf2, sample) + 1;
+
+	if (xdl_init_classifier(&cf, enl1 + enl2 + 1, xpp->flags) < 0)
+		return -1;
+
+	if (xdl_prepare_ctx(1, mf1, enl1, xpp, &cf, &xe->xdf1) < 0) {
+
+		xdl_free_classifier(&cf);
+		return -1;
+	}
+	if (xdl_prepare_ctx(2, mf2, enl2, xpp, &cf, &xe->xdf2) < 0) {
+
+		xdl_free_ctx(&xe->xdf1);
+		xdl_free_classifier(&cf);
+		return -1;
+	}
+
+	if ((XDF_DIFF_ALG(xpp->flags) != XDF_PATIENCE_DIFF) &&
+	    (XDF_DIFF_ALG(xpp->flags) != XDF_HISTOGRAM_DIFF) &&
+	    xdl_optimize_ctxs(&cf, &xe->xdf1, &xe->xdf2) < 0) {
+
+		xdl_free_ctx(&xe->xdf2);
+		xdl_free_ctx(&xe->xdf1);
+		xdl_free_classifier(&cf);
+		return -1;
+	    }
+
+	xdl_free_classifier(&cf);
+
+	return 0;
+}
-- 
gitgitgadget


  parent reply	other threads:[~2025-08-23  3:56 UTC|newest]

Thread overview: 203+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-17 20:32 [PATCH 0/7] RFC: Accelerate xdiff and begin its rustification Ezekiel Newren via GitGitGadget
2025-07-17 20:32 ` [PATCH 1/7] xdiff: introduce rust Ezekiel Newren via GitGitGadget
2025-07-17 21:30   ` brian m. carlson
2025-07-17 21:54     ` Junio C Hamano
2025-07-17 22:39     ` Taylor Blau
2025-07-18 23:15     ` Ezekiel Newren
2025-07-23 21:57       ` brian m. carlson
2025-07-23 22:26         ` Junio C Hamano
2025-07-28 19:11         ` Ezekiel Newren
2025-07-31 22:37           ` brian m. carlson
2025-07-22 22:02     ` Mike Hommey
2025-07-22 23:52       ` brian m. carlson
2025-07-17 22:38   ` Taylor Blau
2025-07-17 20:32 ` [PATCH 2/7] xdiff/xprepare: remove superfluous forward declarations Ezekiel Newren via GitGitGadget
2025-07-17 22:41   ` Taylor Blau
2025-07-17 20:32 ` [PATCH 3/7] xdiff: delete unnecessary fields from xrecord_t and xdfile_t Ezekiel Newren via GitGitGadget
2025-07-17 20:32 ` [PATCH 4/7] xdiff: make fields of xrecord_t Rust friendly Ezekiel Newren via GitGitGadget
2025-07-17 22:46   ` Taylor Blau
2025-07-17 23:13     ` brian m. carlson
2025-07-17 23:37       ` Elijah Newren
2025-07-18  0:23         ` Taylor Blau
2025-07-18  0:21       ` Taylor Blau
2025-07-18 13:35   ` Phillip Wood
2025-07-28 19:34     ` Ezekiel Newren
2025-07-28 19:52       ` Phillip Wood
2025-07-28 20:14         ` Ezekiel Newren
2025-07-31 14:20           ` Phillip Wood
2025-07-31 20:58             ` Ezekiel Newren
2025-08-01  9:14               ` Phillip Wood
2025-07-28 20:53         ` Junio C Hamano
2025-07-28 20:00       ` Collin Funk
2025-07-20  1:39   ` Johannes Schindelin
2025-07-17 20:32 ` [PATCH 5/7] xdiff: separate parsing lines from hashing them Ezekiel Newren via GitGitGadget
2025-07-17 22:59   ` Taylor Blau
2025-07-18 13:34   ` Phillip Wood
2025-07-17 20:32 ` [PATCH 6/7] xdiff: conditionally use Rust's implementation of xxhash Ezekiel Newren via GitGitGadget
2025-07-17 23:29   ` Taylor Blau
2025-07-18 19:00   ` Junio C Hamano
2025-07-31 21:13     ` Ezekiel Newren
2025-08-02  7:53       ` Matthias Aßhauer
2025-07-19 21:53   ` Johannes Schindelin
2025-07-20 10:14     ` Phillip Wood
2025-09-23  9:57       ` gitoxide-compatible licensing of Git's Rust code, was " Johannes Schindelin
2025-09-23 17:48         ` Jeff King
2025-09-24 13:48           ` Phillip Wood
2025-09-25  2:25             ` Jeff King
2025-09-25  5:42               ` Patrick Steinhardt
2025-09-26 10:06               ` Phillip Wood
2025-10-03  3:18                 ` Jeff King
2025-10-03  9:51                   ` Phillip Wood
2025-10-07  9:11                     ` Patrick Steinhardt
2025-10-05  5:32       ` Yee Cheng Chin
2025-07-17 20:32 ` [PATCH 7/7] github_workflows: install rust Ezekiel Newren via GitGitGadget
2025-07-17 21:23   ` brian m. carlson
2025-07-18 23:01     ` Ezekiel Newren
2025-07-25 23:56       ` Ben Knoble
2025-07-19 21:54   ` Johannes Schindelin
2025-07-17 21:51 ` [PATCH 0/7] RFC: Accelerate xdiff and begin its rustification brian m. carlson
2025-07-17 22:25   ` Taylor Blau
2025-07-18  0:29     ` brian m. carlson
2025-07-22 12:21       ` Patrick Steinhardt
2025-07-22 15:56         ` Junio C Hamano
2025-07-22 16:03     ` Sam James
2025-07-22 21:37       ` Elijah Newren
2025-07-22 21:55         ` Sam James
2025-07-22 22:08           ` Collin Funk
2025-07-18  9:23 ` Christian Brabandt
2025-07-18 16:26   ` Junio C Hamano
2025-07-19  0:32     ` Elijah Newren
2025-07-18 13:34 ` Phillip Wood
2025-07-18 21:25   ` Eli Schwartz
2025-07-19  0:48     ` Haelwenn (lanodan) Monnier
2025-07-22 12:21       ` Patrick Steinhardt
2025-07-22 14:24     ` Patrick Steinhardt
2025-07-22 15:14       ` Eli Schwartz
2025-07-22 15:56       ` Sam James
2025-07-23  4:32         ` Patrick Steinhardt
2025-07-24  9:01           ` Pierre-Emmanuel Patry
2025-07-24 10:00             ` Patrick Steinhardt
2025-07-28  9:06               ` Pierre-Emmanuel Patry
2025-07-18 14:38 ` Junio C Hamano
2025-07-18 21:56   ` Ezekiel Newren
2025-07-21 10:14   ` Phillip Wood
2025-07-21 18:33     ` Junio C Hamano
2025-07-19 21:53 ` Johannes Schindelin
2025-07-20  8:45   ` Matthias Aßhauer
2025-08-15  1:22 ` [PATCH v2 00/17] " Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 01/17] doc: add a policy for using Rust brian m. carlson via GitGitGadget
2025-08-15 17:03     ` Matthias Aßhauer
2025-08-15 21:31       ` Junio C Hamano
2025-08-16  8:06         ` Matthias Aßhauer
2025-08-19  2:06       ` Ezekiel Newren
2025-08-15  1:22   ` [PATCH v2 02/17] xdiff: introduce rust Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 03/17] xdiff/xprepare: remove superfluous forward declarations Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 04/17] xdiff: delete unnecessary fields from xrecord_t and xdfile_t Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 05/17] xdiff: make fields of xrecord_t Rust friendly Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 06/17] xdiff: separate parsing lines from hashing them Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 07/17] xdiff: conditionally use Rust's implementation of xxhash Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 08/17] github workflows: install rust Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 09/17] Do support Windows again after requiring Rust Johannes Schindelin via GitGitGadget
2025-08-15 17:12     ` Matthias Aßhauer
2025-08-15 21:48       ` Junio C Hamano
2025-08-15 22:11         ` Johannes Schindelin
2025-08-15 23:37           ` Junio C Hamano
2025-08-15 23:37         ` Junio C Hamano
2025-08-16  8:53         ` Matthias Aßhauer
2025-08-17 15:57           ` Junio C Hamano
2025-08-19  2:22       ` Ezekiel Newren
2025-08-15  1:22   ` [PATCH v2 10/17] win+Meson: allow for xdiff to be compiled with MSVC Johannes Schindelin via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 11/17] win+Meson: do allow linking with the Rust-built xdiff Johannes Schindelin via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 12/17] github workflows: define rust versions and targets in the same place Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 13/17] github workflows: upload Cargo.lock Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 14/17] xdiff: implement a white space iterator in Rust Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 15/17] xdiff: create line_hash() and line_equal() Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 16/17] xdiff: optimize case where --ignore-cr-at-eol is the only whitespace flag Ezekiel Newren via GitGitGadget
2025-08-15  1:22   ` [PATCH v2 17/17] xdiff: use rust's version of whitespace processing Ezekiel Newren via GitGitGadget
2025-08-15 15:07   ` [-SPAM-] [PATCH v2 00/17] RFC: Accelerate xdiff and begin its rustification Ramsay Jones
2025-08-19  2:00     ` Elijah Newren
2025-08-24 16:52       ` Patrick Steinhardt
2025-08-18 22:31   ` Junio C Hamano
2025-08-18 23:52     ` Ben Knoble
2025-08-19  1:52     ` Elijah Newren
2025-08-19  9:47       ` Junio C Hamano
2025-08-23  3:55   ` [PATCH v3 00/15] RFC: Cleanup " Ezekiel Newren via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 01/15] doc: add a policy for using Rust brian m. carlson via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 02/15] xdiff: introduce rust Ezekiel Newren via GitGitGadget
2025-08-23 13:43       ` rsbecker
2025-08-23 14:26         ` Kristoffer Haugsbakk
2025-08-23 15:06           ` rsbecker
2025-08-23 18:30             ` Elijah Newren
2025-08-23 19:24               ` brian m. carlson
2025-08-23 20:04                 ` rsbecker
2025-08-23 20:36                 ` Sam James
2025-08-23 21:17                 ` Haelwenn (lanodan) Monnier
2025-08-27  1:57               ` Taylor Blau
2025-08-27 14:39                 ` rsbecker
2025-08-27 17:06                   ` Junio C Hamano
2025-08-27 17:15                     ` rsbecker
2025-08-27 20:12                     ` Taylor Blau
2025-08-27 20:22                       ` Junio C Hamano
2025-09-02 11:16                         ` Patrick Steinhardt
2025-09-02 11:30                           ` Sam James
2025-09-02 17:27                           ` brian m. carlson
2025-09-02 18:47                             ` Sam James
2025-09-03 18:22                               ` Collin Funk
2025-09-03  5:40                             ` Patrick Steinhardt
2025-09-03 16:22                               ` Ramsay Jones
2025-09-03 22:10                               ` Junio C Hamano
2025-09-03 22:48                                 ` Josh Steadmon
2025-09-04 11:10                                 ` Patrick Steinhardt
2025-09-04 15:45                                   ` Junio C Hamano
2025-09-05  8:23                                     ` Patrick Steinhardt
2025-09-04  0:57                               ` brian m. carlson
2025-09-04 11:39                                 ` Patrick Steinhardt
2025-09-04 13:53                                   ` Sam James
2025-09-05  3:55                                     ` Elijah Newren
2025-09-04 23:17                                   ` Ezekiel Newren
2025-09-05  3:54                                   ` Elijah Newren
2025-09-05  6:50                                     ` Patrick Steinhardt
2025-09-07  4:10                                       ` Elijah Newren
2025-09-07 16:09                                         ` rsbecker
2025-09-08 10:12                                           ` Phillip Wood
2025-09-08 15:32                                             ` rsbecker
2025-09-08 15:10                                           ` Ezekiel Newren
2025-09-08 15:41                                             ` rsbecker
2025-09-08 15:31                                           ` Elijah Newren
2025-09-08 15:36                                             ` rsbecker
2025-09-08 16:13                                               ` Elijah Newren
2025-09-08 17:01                                                 ` rsbecker
2025-09-08  6:40                                         ` Patrick Steinhardt
2025-09-05 10:31                                     ` Phillip Wood
2025-09-05 11:32                                       ` Sam James
2025-09-05 13:14                                       ` Phillip Wood
2025-09-05 13:23                                         ` Patrick Steinhardt
2025-09-05 15:37                                         ` Junio C Hamano
2025-09-08  6:40                                           ` Patrick Steinhardt
2025-08-23 14:29         ` Ezekiel Newren
2025-08-23  3:55     ` [PATCH v3 03/15] github workflows: install rust Ezekiel Newren via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 04/15] win+Meson: do allow linking with the Rust-built xdiff Johannes Schindelin via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 05/15] github workflows: upload Cargo.lock Ezekiel Newren via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 06/15] ivec: create a vector type that is interoperable between C and Rust Ezekiel Newren via GitGitGadget
2025-08-23  8:12       ` Kristoffer Haugsbakk
2025-08-23  9:29         ` Ezekiel Newren
2025-08-23 16:14       ` Junio C Hamano
2025-08-23 16:37         ` Ezekiel Newren
2025-08-23 18:05       ` Junio C Hamano
2025-08-23 20:29         ` Ezekiel Newren
2025-08-25 19:16         ` Elijah Newren
2025-08-26  5:40           ` Junio C Hamano
2025-08-24 13:31       ` Ben Knoble
2025-08-25 20:40         ` Ezekiel Newren
2025-08-26 13:30           ` D. Ben Knoble
2025-08-26 18:47             ` Ezekiel Newren
2025-08-26 22:01               ` brian m. carlson
2025-08-23  3:55     ` Ezekiel Newren via GitGitGadget [this message]
2025-08-23  3:55     ` [PATCH v3 08/15] xdiff: delete unnecessary fields from xrecord_t and xdfile_t Ezekiel Newren via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 09/15] xdiff: make fields of xrecord_t Rust friendly Ezekiel Newren via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 10/15] xdiff: use one definition for freeing xdfile_t Ezekiel Newren via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 11/15] xdiff: replace chastore with an ivec in xdfile_t Ezekiel Newren via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 12/15] xdiff: delete nrec field from xdfile_t Ezekiel Newren via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 13/15] xdiff: delete recs " Ezekiel Newren via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 14/15] xdiff: make xdfile_t more rust friendly Ezekiel Newren via GitGitGadget
2025-08-23  3:55     ` [PATCH v3 15/15] xdiff: implement xdl_trim_ends() in Rust Ezekiel Newren via GitGitGadget

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=d4bed95463216668e7c024e6186ca4574c7114dc.1755921357.git.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=ben.knoble@gmail.com \
    --cc=cb@256bit.org \
    --cc=collin.funk1@gmail.com \
    --cc=contact@hacktivis.me \
    --cc=eschwartz@gentoo.org \
    --cc=ezekielnewren@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=me@ttaylorr.com \
    --cc=mh@glandium.org \
    --cc=mha1993@live.de \
    --cc=newren@gmail.com \
    --cc=phillip.wood123@gmail.com \
    --cc=pierre-emmanuel.patry@embecosm.com \
    --cc=ps@pks.im \
    --cc=ramsay@ramsayjones.plus.com \
    --cc=sam@gentoo.org \
    --cc=sandals@crustytoothpaste.net \
    /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 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 NNTP newsgroup(s).