diff mbox series

[bug#50363,v4] Improve default diff hunk header detection.

Message ID bbac973c0d0388fabe126bd44b60b0683ffe9f03.1632180690.git.iskarian@mgsn.dev
State Accepted
Headers show
Series [bug#50363,v4] Improve default diff hunk header detection. | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Sarah Morgensen Sept. 20, 2021, 11:37 p.m. UTC
Tell git where to look for diff hunk headers: top-level definitions for
Scheme files, and (sub)section headers for texi files.

* .gitattributes, etc/git/gitconfig: New files.
* doc/contributing.texi ("Submitting Patches"): Add subsection
"Configuring Git".  Document etc/git/gitconfig.
---
Changes since v3 (thanks to Kyle for the suggestions):

* Diff name changed from "tex" to "texinfo"

* "texinfo" diff matches nodes rather than sections (this is what most
texinfo diff drivers seem to do)

* Examples fixed

--
 .gitattributes        |  3 +++
 doc/contributing.texi | 46 +++++++++++++++++++++++++++++++++++++++----
 doc/guix.texi         |  1 +
 etc/git/gitconfig     |  5 +++++
 4 files changed, 51 insertions(+), 4 deletions(-)
 create mode 100644 .gitattributes
 create mode 100644 etc/git/gitconfig


base-commit: 808f9ffbd3106da4c92d2367b118b98196c9e81e

Comments

Ludovic Courtès Sept. 22, 2021, 12:55 p.m. UTC | #1
Hi,

Sarah Morgensen <iskarian@mgsn.dev> skribis:

> Tell git where to look for diff hunk headers: top-level definitions for
> Scheme files, and (sub)section headers for texi files.
>
> * .gitattributes, etc/git/gitconfig: New files.
> * doc/contributing.texi ("Submitting Patches"): Add subsection
> "Configuring Git".  Document etc/git/gitconfig.

I have one last question:

> +format-patch} sent to the @email{guix-patches@@gnu.org} mailing list
> +(@pxref{submitting patches,, Submitting patches to a project, git, Git
> +User Manual}).  Contributors are encouraged to take a moment to set some

AFAICS, there’s no Info-format Git manual, is there?  In that case, the
pxref above is incorrect, but we can use @uref instead and/or suggest
‘man git’ or similar.

The rest LGTM, thank you, and thanks Kyle!

Ludo’.
Sarah Morgensen Sept. 22, 2021, 4:22 p.m. UTC | #2
Hi Ludo,

> I have one last question:
>
>> +format-patch} sent to the @email{guix-patches@@gnu.org} mailing list
>> +(@pxref{submitting patches,, Submitting patches to a project, git, Git
>> +User Manual}).  Contributors are encouraged to take a moment to set some
>
> AFAICS, there’s no Info-format Git manual, is there?  In that case, the
> pxref above is incorrect, but we can use @uref instead and/or suggest
> ‘man git’ or similar.

We don't currently build it, but there is.  In the git repo, in
Documentation/Makefile:

--8<---------------cut here---------------start------------->8---
info: git.info gitman.info
[...]
git.info: user-manual.texi
	$(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi
--8<---------------cut here---------------end--------------->8---

It's available online at

  https://git-scm.com/docs/user-manual

and

  https://mirrors.edge.kernel.org/pub/software/scm/git/docs/user-manual.html


My other patch, #50683, adds this reference to htmlxref.cnf.

>
> The rest LGTM, thank you, and thanks Kyle!
>
> Ludo’.

--
Sarah
Ludovic Courtès Oct. 4, 2021, 12:26 p.m. UTC | #3
Hi Sarah,

Sarah Morgensen <iskarian@mgsn.dev> skribis:

>> I have one last question:
>>
>>> +format-patch} sent to the @email{guix-patches@@gnu.org} mailing list
>>> +(@pxref{submitting patches,, Submitting patches to a project, git, Git
>>> +User Manual}).  Contributors are encouraged to take a moment to set some
>>
>> AFAICS, there’s no Info-format Git manual, is there?  In that case, the
>> pxref above is incorrect, but we can use @uref instead and/or suggest
>> ‘man git’ or similar.
>
> We don't currently build it, but there is.  In the git repo, in
> Documentation/Makefile:
>
> info: git.info gitman.info
> [...]
> git.info: user-manual.texi
> 	$(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi
>
> It's available online at
>
>   https://git-scm.com/docs/user-manual
>
> and
>
>   https://mirrors.edge.kernel.org/pub/software/scm/git/docs/user-manual.html
>
> My other patch, #50683, adds this reference to htmlxref.cnf.

Oh, nice; thanks for explaining.

Finally applied!

Ludo’.
Marius Bakke Oct. 13, 2021, 10:30 p.m. UTC | #4
Ludovic Courtès <ludo@gnu.org> skriver:

> Finally applied!

It looks like this commit contained the documentation changes only.
Fixed in f8b10932c86cf4c1657a67e8c484d76f757b64bd.  :-)
diff mbox series

Patch

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000..b31f7fd74d
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,3 @@ 
+*.scm       diff=scheme
+*.scm.in    diff=scheme
+*.texi      diff=texinfo
diff --git a/doc/contributing.texi b/doc/contributing.texi
index d1b77d7d05..a6bfcb82e0 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -992,9 +992,12 @@  Submitting Patches
 Development is done using the Git distributed version control system.
 Thus, access to the repository is not strictly necessary.  We welcome
 contributions in the form of patches as produced by @code{git
-format-patch} sent to the @email{guix-patches@@gnu.org} mailing list.
-Seasoned Guix developers may also want to look at the section on commit
-access (@pxref{Commit Access}).
+format-patch} sent to the @email{guix-patches@@gnu.org} mailing list
+(@pxref{submitting patches,, Submitting patches to a project, git, Git
+User Manual}).  Contributors are encouraged to take a moment to set some
+Git repository options (@pxref{Configuring Git}) first, which can
+improve the readability of patches.  Seasoned Guix developers may also
+want to look at the section on commit access (@pxref{Commit Access}).
 
 This mailing list is backed by a Debbugs instance, which allows us to
 keep track of submissions (@pxref{Tracking Bugs and Patches}).  Each
@@ -1205,11 +1208,46 @@  Submitting Patches
 When a bug is resolved, please close the thread by sending an email to
 @email{@var{NNN}-done@@debbugs.gnu.org}.
 
+@node Configuring Git
+@subsection Configuring Git
+@cindex git configuration
+@cindex @code{git format-patch}
+@cindex @code{git send-email}
+
+If you have not done so already, you may wish to set a name and email
+that will be associated with your commits (@pxref{telling git your name,
+, Telling Git your name, git, Git User Manual}).  If you wish to use a
+different name or email just for commits in this respository, you can
+use @command{git config --local}, or edit @file{.git/config} in the
+repository instead of @file{~/.gitconfig}.
+
+We provide some default settings in @file{etc/git/gitconfig} which
+modify how patches are generated, making them easier to read and apply.
+These settings can be applied by manually copying them to
+@file{.git/config} in your checkout, or by telling Git to include the
+whole file:
+
+@example
+git config --local include.path ../etc/git/gitconfig
+@end example
+
+From then on, any changes to @file{etc/git/gitconfig} would
+automatically take effect.
+
+Since the first patch in a series must be sent separately
+(@pxref{Sending a Patch Series}), it can also be helpful to tell
+@command{git format-patch} to handle the e-mail threading instead of
+@command{git send-email}:
+
+@example
+git config --local format.thread shallow
+git config --local sendemail.thread no
+@end example
+
 @unnumberedsubsec Sending a Patch Series
 @anchor{Sending a Patch Series}
 @cindex patch series
 @cindex @code{git send-email}
-@cindex @code{git-send-email}
 
 When sending a patch series (e.g., using @code{git send-email}), please
 first send one message to @email{guix-patches@@gnu.org}, and then send
diff --git a/doc/guix.texi b/doc/guix.texi
index 6436e83a7c..4dac36310f 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -96,6 +96,7 @@ 
 Copyright @copyright{} 2021 Hui Lu@*
 Copyright @copyright{} 2021 pukkamustard@*
 Copyright @copyright{} 2021 Alice Brenon@*
+Copyright @copyright{} 2021 Sarah Morgensen@*
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
diff --git a/etc/git/gitconfig b/etc/git/gitconfig
new file mode 100644
index 0000000000..c9ebdc8fa8
--- /dev/null
+++ b/etc/git/gitconfig
@@ -0,0 +1,5 @@ 
+[diff "scheme"]
+	xfuncname = "^(\\(define.*)$"
+
+[diff "texinfo"]
+	xfuncname = "^@node[[:space:]]+([^,]+).*$"