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

[PATCH v2 0/3] notes.c: introduce "--blank-line" option

From
Teng Long <dyroneteng@gmail.com>
Date
Nov 7, 2022, 13:57 UTC
Message-ID
<cover.1667828335.git.dyroneteng@gmail.com>
In-Reply-To
<20221013055654.39628-1-tenglong.tl@alibaba-inc.com>
From: Teng Long <dyroneteng@gmail.com>
Diff from RFC Patch v1:
* optimize the commit-msg and docs of introducing new "--blank-line" option.
* drop unreachable code in "append_edit()". Ævar found that some code has been
unreachable in patch v1. I think it's because, after the commit "notes.c: fixed
tip when target and append note are both empty", for example in this patch, the
situation of "removing an existing note" should be impossible unless a BUG when
trying to do append. The tests are passed, but I'm not sure I fully understand
the original design.

Thanks to Junio C Hamano, Ævar Arnfjörð Bjarmason and Phillip Wood for the help in v1.

Teng Long (3):
  notes.c: introduce "--blank-line" option
  notes.c: fixed tip when target and append note are both empty
  notes.c: drop unreachable code in "append_edit()"
 Documentation/git-notes.txt | 11 +++++++++--
 builtin/notes.c             | 27 +++++++++++++++++++--------
 t/t3301-notes.sh            | 15 ++++++++++++++-
 3 files changed, 42 insertions(+), 11 deletions(-)
Range-diff against v1:
1:  d69bd0a011 ! 1:  2381947abd notes.c: introduce "--no-blankline" option
    @@ Metadata
     Author: Teng Long <dyroneteng@gmail.com>
     
      ## Commit message ##
    -    notes.c: introduce "--no-blankline" option
    +    notes.c: introduce "--blank-line" option
     
         When appending to a given object which has note and if the appended
         note is not empty too, we will insert a blank line at first. The
         blank line serves as a split line, but sometimes we just want to
    -    omit it then append on the heels of the target note.
    +    omit it then append on the heels of the target note. So, we add
    +    a new "OPT_BOOL()" option to determain whether a new blank line
    +    is insert at first.
     
         Signed-off-by: Teng Long <dyroneteng@gmail.com>
     
    @@ Documentation/git-notes.txt: SYNOPSIS
      'git notes' add [-f] [--allow-empty] [-F <file> | -m <msg> | (-c | -C) <object>] [<object>]
      'git notes' copy [-f] ( --stdin | <from-object> [<to-object>] )
     -'git notes' append [--allow-empty] [-F <file> | -m <msg> | (-c | -C) <object>] [<object>]
    -+'git notes' append [--allow-empty] [--no-blankline] [-F <file> | -m <msg> | (-c | -C) <object>] [<object>]
    ++'git notes' append [--allow-empty] [--blank-line] [-F <file> | -m <msg> | (-c | -C) <object>] [<object>]
      'git notes' edit [--allow-empty] [<object>]
      'git notes' show [<object>]
      'git notes' merge [-v | -q] [-s <strategy> ] <notes-ref>
    @@ Documentation/git-notes.txt: OPTIONS
      	Allow an empty note object to be stored. The default behavior is
      	to automatically remove empty notes.
      
    ++--blank-line::
     +--no-blank-line::
    -+	When appending note, do not insert a blank line between
    -+	the note of given object and the note to be appended.
    ++	Controls if a blank line to split paragraphs is inserted
    ++	when appending (the default is true).
     +
      --ref <ref>::
      	Manipulate the notes tree in <ref>.  This overrides
    @@ builtin/notes.c: static int copy(int argc, const char **argv, const char *prefix
      static int append_edit(int argc, const char **argv, const char *prefix)
      {
      	int allow_empty = 0;
    -+	int no_blankline = 0;
    ++	int blankline = 1;
      	const char *object_ref;
      	struct notes_tree *t;
      	struct object_id object, new_note;
    @@ builtin/notes.c: static int append_edit(int argc, const char **argv, const char
      			parse_reuse_arg),
      		OPT_BOOL(0, "allow-empty", &allow_empty,
      			N_("allow storing empty note")),
    -+		OPT_BOOL(0, "no-blankline", &no_blankline,
    -+			N_("do not initially add a blank line")),
    ++		OPT_BOOL(0, "blank-line", &blankline,
    ++			N_("insert paragraph break before appending to an existing note")),
      		OPT_END()
      	};
      	int edit = !strcmp(argv[0], "edit");
    @@ builtin/notes.c: static int append_edit(int argc, const char **argv, const char
      
      		strbuf_grow(&d.buf, size + 1);
     -		if (d.buf.len && prev_buf && size)
    -+		if (!no_blankline && d.buf.len && prev_buf && size)
    ++		if (blankline && d.buf.len && prev_buf && size)
      			strbuf_insertstr(&d.buf, 0, "\n");
      		if (prev_buf && size)
      			strbuf_insert(&d.buf, 0, prev_buf, size);
    @@ t/t3301-notes.sh: test_expect_success 'listing non-existing notes fails' '
      '
      
     +test_expect_success 'append to existing note without a beginning blank line' '
    -+	cat >expect <<-EOF &&
    ++	cat >expect <<-\EOF &&
     +		Initial set of notes
     +		Appended notes
     +	EOF
     +	git notes add -m "Initial set of notes" &&
    -+	git notes append --no-blankline -m "Appended notes" &&
    ++	git notes append --no-blank-line -m "Appended notes" &&
     +	git notes show >actual &&
     +	test_cmp expect actual
     +'
2:  c581cb24b6 ! 2:  5dbe014a09 notes.c: fixed tip when target and append note are both empty
    @@ builtin/notes.c: static int append_edit(int argc, const char **argv, const char
     -	char *logmsg;
     +	char *logmsg = NULL;
      	const char * const *usage;
    - 	struct note_data d = { 0, 0, NULL, STRBUF_INIT };
    -+	struct note_data cp = { 0, 0, NULL, STRBUF_INIT };
    +-	struct note_data d = { 0, 0, NULL, STRBUF_INIT };
    ++	struct note_data d = {
    ++		.given = 0,
    ++		.use_editor = 0,
    ++		.edit_path = NULL,
    ++		.buf = STRBUF_INIT
    ++	};
    ++
      	struct option options[] = {
      		OPT_CALLBACK_F('m', "message", &d, N_("message"),
      			N_("note contents as a string"), PARSE_OPT_NONEG,
     @@ builtin/notes.c: static int append_edit(int argc, const char **argv, const char *prefix)
    - 
    - 	prepare_note_data(&object, &d, edit && note ? note : NULL);
    - 
    -+	strbuf_addbuf(&cp.buf, &d.buf);
    -+
    - 	if (note && !edit) {
    - 		/* Append buf to previous note contents */
    - 		unsigned long size;
    -@@ builtin/notes.c: static int append_edit(int argc, const char **argv, const char *prefix)
      		if (add_note(t, &object, &new_note, combine_notes_overwrite))
      			BUG("combine_notes_overwrite failed");
      		logmsg = xstrfmt("Notes added by 'git notes %s'", argv[0]);
     +		commit_notes(the_repository, t, logmsg);
    -+	} else if (!cp.buf.len) {
    ++	} else if (!d.buf.len && !note) {
     +		fprintf(stderr,
     +			_("Both original and appended notes are empty in %s, do nothing\n"),
     +			oid_to_hex(&object));
    @@ builtin/notes.c: static int append_edit(int argc, const char **argv, const char
      
      	free(logmsg);
      	free_note_data(&d);
    -+	free_note_data(&cp);
    - 	free_notes(t);
    - 	return 0;
    - }
     
      ## t/t3301-notes.sh ##
     @@ t/t3301-notes.sh: test_expect_success 'git notes append == add when there is no existing note' '
-:  ---------- > 3:  2475ea0c04 notes.c: drop unreachable code in "append_edit()"
-- 
2.38.1.383.ge7205ac0a40.dirty
Previous: Ævar Arnfjörð BjarmasonNext: Teng Long
Message 16 of 91 in “notes.c: introduce "--no-blankline" option”
  1. 0/2 notes.c: introduce "--no-blankline" optionTeng Long, Oct 13, 2022
  2. 1/2 notes.c: introduce "--no-blankline" optionTeng Long, Oct 13, 2022
  3. Junio C HamanoOct 13, 2022
  4. Teng LongOct 17, 2022
  5. Ævar Arnfjörð BjarmasonOct 13, 2022
  6. Teng LongOct 17, 2022
  7. 2/2 notes.c: fixed tip when target and append note are both emptyTeng Long, Oct 13, 2022
  8. Ævar Arnfjörð BjarmasonOct 13, 2022
  9. Phillip WoodOct 13, 2022
  10. Ævar Arnfjörð BjarmasonOct 13, 2022
  11. Phillip WoodOct 15, 2022
  12. Teng LongOct 18, 2022
  13. Teng LongOct 18, 2022
  14. Teng LongOct 18, 2022
  15. Ævar Arnfjörð BjarmasonOct 18, 2022
  16. 0/3 notes.c: introduce "--blank-line" optionTeng Long, Nov 7, 2022
  17. 1/3 notes.c: introduce "--blank-line" optionTeng Long, Nov 7, 2022
  18. Ævar Arnfjörð BjarmasonNov 7, 2022
  19. Eric SunshineNov 7, 2022
  20. Ævar Arnfjörð BjarmasonNov 7, 2022
  21. Taylor BlauNov 7, 2022
  22. Ævar Arnfjörð BjarmasonNov 7, 2022
  23. Taylor BlauNov 8, 2022
  24. Teng LongNov 8, 2022
  25. Teng LongNov 8, 2022
  26. Ævar Arnfjörð BjarmasonNov 8, 2022
  27. Teng LongNov 9, 2022
  28. Ævar Arnfjörð BjarmasonNov 7, 2022
  29. Teng LongNov 8, 2022
  30. Taylor BlauNov 7, 2022
  31. Teng LongNov 8, 2022
  32. 2/3 notes.c: fixed tip when target and append note are both emptyTeng Long, Nov 7, 2022
  33. Ævar Arnfjörð BjarmasonNov 7, 2022
  34. Taylor BlauNov 7, 2022
  35. Ævar Arnfjörð BjarmasonNov 7, 2022
  36. Taylor BlauNov 7, 2022
  37. Teng LongNov 8, 2022
  38. 3/3 notes.c: drop unreachable code in "append_edit()"Teng Long, Nov 7, 2022
  39. Ævar Arnfjörð BjarmasonNov 7, 2022
  40. Ævar Arnfjörð BjarmasonNov 7, 2022
  41. Teng LongNov 9, 2022
  42. Teng LongNov 9, 2022
  43. 0/5 notes.c: introduce "--no-blank-line" optionTeng Long, Nov 9, 2022
  44. 1/5 notes.c: cleanup 'strbuf_grow' call in 'append_edit'Teng Long, Nov 9, 2022
  45. 2/5 notes.c: cleanup for "designated init" and "char ptr init"Teng Long, Nov 9, 2022
  46. 4/5 notes.c: provide tips when target and append note are both emptyTeng Long, Nov 9, 2022
  47. 3/5 notes.c: drop unreachable code in 'append_edit()'Teng Long, Nov 9, 2022
  48. 5/5 notes.c: introduce "--no-blank-line" optionTeng Long, Nov 9, 2022
  49. 0/5 notes.c: introduce "--no-blank-line" optionTeng Long, Nov 28, 2022
  50. Junio C HamanoNov 29, 2022
  51. Taylor BlauNov 29, 2022
  52. Teng LongNov 29, 2022
  53. Junio C HamanoNov 29, 2022
  54. Teng LongDec 15, 2022
  55. Eric SunshineDec 19, 2022
  56. Teng LongDec 21, 2022
  57. Junio C HamanoDec 21, 2022
  58. Teng LongDec 22, 2022
  59. Eric SunshineDec 23, 2022
  60. 0/5 notes.c: introduce "--separator" optioTeng Long, Jan 12, 2023
  61. 1/5 notes.c: cleanup 'strbuf_grow' call in 'append_edit'Teng Long, Jan 12, 2023
  62. Eric SunshineJan 15, 2023
  63. Teng LongJan 28, 2023
  64. 2/5 notes.c: cleanup for "designated init" and "char ptr init"Teng Long, Jan 12, 2023
  65. Ævar Arnfjörð BjarmasonJan 12, 2023
  66. Teng LongJan 28, 2023
  67. 4/5 notes.c: provide tips when target and append note are both emptyTeng Long, Jan 12, 2023
  68. Ævar Arnfjörð BjarmasonJan 12, 2023
  69. Eric SunshineJan 15, 2023
  70. 3/5 notes.c: drop unreachable code in 'append_edit()'Teng Long, Jan 12, 2023
  71. Eric SunshineJan 15, 2023
  72. Eric SunshineJan 15, 2023
  73. Teng LongJan 28, 2023
  74. Eric SunshineJan 30, 2023
  75. Teng LongFeb 1, 2023
  76. 5/5 notes.c: introduce "--separator" optionTeng Long, Jan 12, 2023
  77. Ævar Arnfjörð BjarmasonJan 12, 2023
  78. Eric SunshineJan 15, 2023
  79. Eric SunshineJan 15, 2023
  80. 0/3 notes.c: introduce "--separator" optionTeng Long, Feb 16, 2023
  81. 1/3 notes.c: cleanup 'strbuf_grow' call in 'append_edit'Teng Long, Feb 16, 2023
  82. Junio C HamanoFeb 16, 2023
  83. Teng LongFeb 20, 2023
  84. 2/3 notes.c: cleanup for "designated init"Teng Long, Feb 16, 2023
  85. Junio C HamanoFeb 16, 2023
  86. 3/3 notes.c: introduce "--separator" optionTeng Long, Feb 16, 2023
  87. Junio C HamanoFeb 16, 2023
  88. Teng LongFeb 20, 2023
  89. Junio C HamanoFeb 21, 2023
  90. Teng LongFeb 22, 2023
  91. Junio C HamanoFeb 22, 2023

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.