git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 16/16] config: allow multi-byte core.commentChar

From
Jeff King <peff@peff.net>
Date
Mar 15, 2024, 08:10 UTC
Message-ID
<20240315081041.GA1753560@coredump.intra.peff.net>
In-Reply-To
<6be335ed-8598-406c-b535-2e58554b00e9@app.fastmail.com>
On Fri, Mar 15, 2024 at 08:16:53AM +0100, Kristoffer Haugsbakk wrote:
Show 13 quoted lines
> > Mostly I was worried that people would take "char" in the name to assume
> > it could only be a single byte (I had originally even started the new
> > sentence with "Despite the word 'char' in the name, this option
> > can..."). And that is not just history, but a name we are stuck with
> > forever[1].
> 
> Missing footnote or referring to my footnote?
> 
> My suggestion was to use a `core.commentString` alias. Which might
> matter for new answers to questions about its use. It might not matter
> if in practice most people get their config tips from 1500 point
> StackOverflow question about how git-commit(1) keeps swallowing their
> GitHub issue numbers (due to automatic linewrap) from 2011.

Heh, missing footnote. I was going to say "we could introduce core.commentStr or similar", but after your comment I searched in the archive and see that you did indeed already suggest it.

I'm not sure if it would make things more or less confusing to have two related values. One nice side effect is that the new variable would be ignored by older versions of Git (whereas by extending core.commentChar, you end up with config that causes older versions to barf). That probably doesn't matter that much for most users, but as somebody who works on Git I frequently run old versions for bug testing, bisection, and so forth.

Show 6 quoted lines
> > I actually do think the "string" nature is mostly uninteresting, and I'd
> > be OK leaving it as an easter egg.
> 
> To my mind a string subsumes a char (multi- or not). Like in programming
> languages: some might be used to single-char `#`, but I don’t think they
> do a double take when they see languages with `//` or `--`.

Hmm, good point. I was mostly focused on UTF-8 characters, but "//" is quite a reasonable thing for people to try. It is probably a better example than "foo".

Show 9 quoted lines
> > What your suggestion doesn't say is that multi-byte characters are
> > OK. But if we think people will just assume that in a modern UTF-8
> > world, then maybe we don't need to say anything at all?
> 
> Given that we’re mostly in the context of a commit message, an
> ASCII-only restriction would feel archaic.
>
> I guess it depends on what the *normal* is in the documentation at
> large. As a user I’m used to Git handling the text that I give it.

Right, that's what I was asking. To me "character" means an ASCII byte, but I think I might be archaic myself. ;) If most of our readers would just assume that multi-byte characters work, perhaps it is confusing things to even mention it.

> > It actually does not have to be UTF-8.
> 
> Good point. Unicode is more appropriate.

I think other Unicode encodings are likely to have problems (because they embed NULs). Specifically I was thinking that you could probably get away with latin1 or other 8-bit encodings. But again, I really hope nobody is doing that anymore.

So anyway, adapting your original suggestion based on discussion in the thread, maybe squash in (to the final patch):

diff --git a/Documentation/config/core.txt b/Documentation/config/core.txt
index c86b8c8408..c5a8033df9 100644
--- a/Documentation/config/core.txt
+++ b/Documentation/config/core.txt
@@ -523,9 +523,8 @@ core.commentChar::
 	Commands such as `commit` and `tag` that let you edit
 	messages consider a line that begins with this character
 	commented, and removes them after the editor returns
-	(default '#'). Note that this option can take values larger than
-	a byte (whether a single multi-byte character, or you
-	could even go wild with a multi-character sequence).
+	(default '#'). Note that this variable can be a string like
+	`//` or `⁑⁕⁑`; it doesn't have to be a single ASCII character.
 +
 If set to "auto", `git-commit` would select a character that is not
 the beginning character of any line in existing commit messages.


That's assuming we don't want to go the commentString route, which would
require a bit more re-working of the patch. I'm also open to a more
clever or pretty multi-byte example if we have one. ;)

-Peff
Previous: Kristoffer HaugsbakkNext: Kristoffer Haugsbakk
Message 65 of 82 in “Clarify the meaning of "character" in the documentation”
  1. Manlio PerilloMar 5, 2024
  2. Kristoffer HaugsbakkMar 5, 2024
  3. Junio C HamanoMar 5, 2024
  4. Dragan SimicMar 5, 2024
  5. Kristoffer HaugsbakkMar 5, 2024
  6. Dragan SimicMar 5, 2024
  7. Kristoffer HaugsbakkMar 5, 2024
  8. Dragan SimicMar 5, 2024
  9. Junio C HamanoMar 5, 2024
  10. Dragan SimicMar 5, 2024
  11. multi-byte core.commentCharJeff King, Mar 6, 2024
  12. 0/15 allow multi-byte core.commentCharJeff King, Mar 7, 2024
  13. 01/15 strbuf: simplify comment-handling in add_lines() helperJeff King, Mar 7, 2024
  14. 02/15 strbuf: avoid static variables in strbuf_add_commented_lines()Jeff King, Mar 7, 2024
  15. 03/15 commit: refactor base-case of adjust_comment_line_char()Jeff King, Mar 7, 2024
  16. 04/15 strbuf: avoid shadowing global comment_line_char nameJeff King, Mar 7, 2024
  17. 05/15 environment: store comment_line_char as a stringJeff King, Mar 7, 2024
  18. 06/15 strbuf: accept a comment string for strbuf_stripspace()Jeff King, Mar 7, 2024
  19. Jeff KingMar 7, 2024
  20. 07/15 strbuf: accept a comment string for strbuf_commented_addf()Jeff King, Mar 7, 2024
  21. 08/15 strbuf: accept a comment string for strbuf_add_commented_lines()Jeff King, Mar 7, 2024
  22. 09/15 prefer comment_line_str to comment_line_char for printingJeff King, Mar 7, 2024
  23. 10/15 find multi-byte comment chars in NUL-terminated stringsJeff King, Mar 7, 2024
  24. 11/15 find multi-byte comment chars in unterminated buffersJeff King, Mar 7, 2024
  25. Jeff KingMar 7, 2024
  26. René ScharfeMar 7, 2024
  27. René ScharfeMar 7, 2024
  28. René ScharfeMar 7, 2024
  29. Phillip WoodMar 8, 2024
  30. Junio C HamanoMar 8, 2024
  31. Phillip WoodMar 8, 2024
  32. Jeff KingMar 12, 2024
  33. phillip.wood123@gmail.comMar 12, 2024
  34. Jeff KingMar 13, 2024
  35. Jeff KingMar 12, 2024
  36. René ScharfeMar 14, 2024
  37. 12/15 sequencer: handle multi-byte comment characters when writing todo listJeff King, Mar 7, 2024
  38. Phillip WoodMar 8, 2024
  39. Jeff KingMar 12, 2024
  40. 13/15 wt-status: drop custom comment-char stringificationJeff King, Mar 7, 2024
  41. 14/15 environment: drop comment_line_char compatibility macroJeff King, Mar 7, 2024
  42. 15/15 config: allow multi-byte core.commentCharJeff King, Mar 7, 2024
  43. Phillip WoodMar 8, 2024
  44. 0/16 allow multi-byte core.commentCharJeff King, Mar 12, 2024
  45. 01/16 config: forbid newline as core.commentCharJeff King, Mar 12, 2024
  46. 02/16 strbuf: simplify comment-handling in add_lines() helperJeff King, Mar 12, 2024
  47. 03/16 strbuf: avoid static variables in strbuf_add_commented_lines()Jeff King, Mar 12, 2024
  48. 04/16 commit: refactor base-case of adjust_comment_line_char()Jeff King, Mar 12, 2024
  49. 05/16 strbuf: avoid shadowing global comment_line_char nameJeff King, Mar 12, 2024
  50. 06/16 environment: store comment_line_char as a stringJeff King, Mar 12, 2024
  51. 07/16 strbuf: accept a comment string for strbuf_stripspace()Jeff King, Mar 12, 2024
  52. 08/16 strbuf: accept a comment string for strbuf_commented_addf()Jeff King, Mar 12, 2024
  53. 09/16 strbuf: accept a comment string for strbuf_add_commented_lines()Jeff King, Mar 12, 2024
  54. 10/16 prefer comment_line_str to comment_line_char for printingJeff King, Mar 12, 2024
  55. 11/16 find multi-byte comment chars in NUL-terminated stringsJeff King, Mar 12, 2024
  56. 12/16 find multi-byte comment chars in unterminated buffersJeff King, Mar 12, 2024
  57. 13/16 sequencer: handle multi-byte comment characters when writing todo listJeff King, Mar 12, 2024
  58. 14/16 wt-status: drop custom comment-char stringificationJeff King, Mar 12, 2024
  59. 15/16 environment: drop comment_line_char compatibility macroJeff King, Mar 12, 2024
  60. 16/16 config: allow multi-byte core.commentCharJeff King, Mar 12, 2024
  61. Kristoffer HaugsbakkMar 13, 2024
  62. Junio C HamanoMar 13, 2024
  63. Jeff KingMar 15, 2024
  64. Kristoffer HaugsbakkMar 15, 2024
  65. Jeff KingMar 15, 2024
  66. Kristoffer HaugsbakkMar 15, 2024
  67. Junio C HamanoMar 15, 2024
  68. Jeff KingMar 16, 2024
  69. Junio C HamanoMar 26, 2024
  70. Kristoffer HaugsbakkMar 26, 2024
  71. Jeff KingMar 27, 2024
  72. 17/16 config: add core.commentStringJeff King, Mar 27, 2024
  73. Chris TorekMar 27, 2024
  74. Junio C HamanoMar 27, 2024
  75. Jeff KingMar 28, 2024
  76. Junio C HamanoMar 27, 2024
  77. phillip.wood123@gmail.comMar 12, 2024
  78. Junio C HamanoMar 12, 2024
  79. Kristoffer HaugsbakkMar 5, 2024
  80. Junio C HamanoMar 5, 2024
  81. Kristoffer HaugsbakkMar 5, 2024
  82. brian m. carlsonMar 5, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.