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

Re: [PATCH 2/2] refs.c: Write reflogs for notes just like for branch heads

From
Johan Herland <johan@herland.net>
Date
Mar 29, 2010, 14:25 UTC
Message-ID
<201003291625.22977.johan@herland.net>
In-Reply-To
<0f06a30f395c14307066d0e4365fc61a294997db.1269867675.git.git@drmicha.warpmail.net>
On Monday 29 March 2010, Michael J Gruber wrote:
Show 9 quoted lines
> The notes code intends to write reflog entries, but currently they
> are not written because log_ref_write() checks for the refname path
> explicitly.
>
> Add refs/notes to the list of allowed paths so that notes references
> are treated just like branch heads, i.e. according to
> core.logAllRefUpdates and core.bare.
>
> Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Both patches are
Acked-by: Johan Herland <johan@herland.net>
Show 8 quoted lines
> ---
> This is actually inspired by Jeff's novel notes use. I think there
> are use cases where a notes log makes sense (notes on commits) and
> those where it does not (metadata/textconv). In both cases having a
> reflog is useful. So, the next step is really to allow notes trees
> without history, which also takes care of the pruning issue. I know
> how to do this, I just have to decide about the configuration
> options.

I noticed that Jeff's proof-of-concept wrote notes trees without making notes commits, and although it seemed like a bug at first, it does - as you say - provide a rather nice way to store notes trees without history.

Note that I haven't explicitly designed the notes feature with this in mind, so it's wise to add testcases for expected behaviour once we start use history-less notes trees.

Thinking about it, the notes code itself (notes.h/.c) only wants a notes _tree_ object, so will probably work fine with history-less notes trees. But builtin/notes.c with its public commit_notes() function may be another story...

...Johan
Show 29 quoted lines
>  refs.c           |    1 +
>  t/t3301-notes.sh |    2 +-
>  2 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/refs.c b/refs.c
> index 0f24c8d..d3db15a 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -1276,6 +1276,7 @@ static int log_ref_write(const char *ref_name,
> const unsigned char *old_sha1, if (log_all_ref_updates &&
>  	    (!prefixcmp(ref_name, "refs/heads/") ||
>  	     !prefixcmp(ref_name, "refs/remotes/") ||
> +	     !prefixcmp(ref_name, "refs/notes/") ||
>  	     !strcmp(ref_name, "HEAD"))) {
>  		if (safe_create_leading_directories(log_file) < 0)
>  			return error("unable to create directory for %s",
> diff --git a/t/t3301-notes.sh b/t/t3301-notes.sh
> index 5410a6d..b2e7b07 100755
> --- a/t/t3301-notes.sh
> +++ b/t/t3301-notes.sh
> @@ -69,7 +69,7 @@ cat >expect <<EOF
>  d423f8c refs/notes/commits@{0}: notes: Notes added by 'git notes
> add' EOF
>
> -test_expect_failure 'create reflog entry' '
> +test_expect_success 'create reflog entry' '
>  	git reflog show refs/notes/commits >output &&
>  	test_cmp expect output
>  '
-- 
Johan Herland, <johan@herland.net>
www.herland.net
Previous: Michael J GruberNext: Jeff King
Message 3 of 7 in “t3301-notes: Test the creation of reflog entries”
  1. 1/2 t3301-notes: Test the creation of reflog entriesMichael J Gruber, Mar 29, 2010
  2. 2/2 refs.c: Write reflogs for notes just like for branch headsMichael J Gruber, Mar 29, 2010
  3. Johan HerlandMar 29, 2010
  4. Jeff KingMar 30, 2010
  5. Johan HerlandMar 30, 2010
  6. Jakub NarebskiMar 30, 2010
  7. Jeff KingApr 2, 2010

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.