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

Re: [PATCHv4 00/21] git notes merge

From
Johan Herland <johan@herland.net>
Date
Oct 23, 2010, 00:47 UTC
Message-ID
<201010230247.45097.johan@herland.net>
In-Reply-To
<AANLkTinY2q-nM8tSWgNG2TtuNXPPzwhY0M-QknODqAoK@mail.gmail.com>
On Friday 22 October 2010, Sverre Rabbelier wrote:
Show 19 quoted lines
> On Fri, Oct 22, 2010 at 10:41, Johan Herland wrote:
> > On Saturday 09 October 2010, Sverre Rabbelier wrote:
> >> On Sat, Oct 9, 2010 at 03:08, Johan Herland wrote:
> >> > - Fetching and pushing note refs:
> >> >  - Add refs/notes/* to default fetch refspec?
> >> 
> >> Or at least add a '--notes[=<notes namespace>]' to fetch, pull, and
> >> push.
> > 
> > Agreed, at least that.
> > 
> > In order to promote sharing of notes, though, I'd like for it to be
> > possible to configure the repo so that a vanilla 'git fetch' also
> > updates your notes. In fact, I wonder if this should even be made the
> > default.
> 
> I think notes directly under /refs/notes/ should be shared by default,
> but those in sub-refs (such as the /refs/notes/am/ that's been
> mentioned before) should not.

In theory that would make sense, but how you write that as a refspec? AFAIK, refspecs don't (yet) support a syntax for (a) _excluding_ something from a glob, and certainly not (b) excluding all "sub-refs" from a glob.

Alternatively, we could share everything under refs/notes/, except /refs/notes/local/ (or refs/notes/private/ or whatever). That would just require support for (a)...

Show 16 quoted lines
> >> >  - A way to specify (at clone time) which refspec(s) to set up?
> >> 
> >> How would that look like?
> > 
> > Maybe add an option to 'git clone' (and 'git remote add') that
> > specifies the refspec you want to use in your config for that remote.
> > Something like:
> > 
> >  git clone --fetch="+refs/heads/*:refs/remotes/origin/*" \
> >            --fetch="+refs/notes/*:refs/remotes/origin/notes/*" \
> >            <source_url> ...
> 
> Who's going to type that out though? The only use case I can think of
> is if you want to be able to give someone a line they can paste and be
> set right away, but I don't see why in that case pasting multiple
> commands (i.e., calling 'git config' a few times) wouldn't suffice.

You might be right. I was thinking that before we provide shorthands, we should provide an option that let you specify _any_ refspec. Sort of as a fallback if somebody's scenario doesn't fit into any of the shorthands.

But as you say, this can also be done with a few calls to git config.
Show 8 quoted lines
> > Obviously, we would probably want to provide shorthands for the most
> > common refspecs, like:
> > 
> >  git clone --fetch=default,notes <source_url> ...
> >  git clone --fetch-heads --fetch-notes <source_url> ...
> 
> Adding refspec shorthands _does_ make sense. However, it might make
> more sense to put those under 'git remote' instead?
I'd say _both_ 'git remote' and 'git clone'.
Show 13 quoted lines
> >> >  - A way for the remote repo to hint at which refspecs you might
> >> > want to set up (by default?)
> >> 
> >> I assume this would be a generic mechanism of sorts? Are there any
> >> other use cases for this other than notes?
> > 
> > Yes, I believe so (although I haven't thought much about this, yet).
> > There's been earlier discussions on hiding certain branches from view.
> > This could maybe be solved by the server suggesting a refspec that
> > excludes the stuff you don't want to share (by default). Similary, the
> > refspec could _include_ notes namespaces that you do want to share.
> 
> That sounds like a good use case.

But I believe we need to extend the refspec syntax to support at least (a) from above (excluding named entries from a refspec glob) in order to support hiding of certain refs. Still, I think it would be a useful addition.

Show 7 quoted lines
> > Of course (as today) the client should be free to demand a different
> > refspec, e.g. if it wants access to everything, or if it's only
> > interested in a subset of the "default" refs.
> 
> Of course, I reckon it would just set up their refspecs, and the user
> would be free to change it. Especially if we inform the user that the
> refspec was set to something other than the default refspec.
Agreed.
...Johan
-- 
Johan Herland, <johan@herland.net>
www.herland.net
Previous: Sverre RabbelierNext: Sverre Rabbelier
Message 40 of 43 in “[PATCHv4 00/21] git notes merge”
  1. Johan HerlandOct 21, 2010
  2. 01/21 notes.c: Hexify SHA1 in die() message from init_notes()Johan Herland, Oct 21, 2010
  3. 02/21 (trivial) notes.h: Minor documentation fixes to copy_notes()Johan Herland, Oct 21, 2010
  4. 03/21 notes.h: Make default_notes_ref() available in notes APIJohan Herland, Oct 21, 2010
  5. 04/21 notes.c: Reorder functions in preparation for next commitJohan Herland, Oct 21, 2010
  6. 05/21 notes.h/c: Clarify the handling of notes objects that are == null_sha1Johan Herland, Oct 21, 2010
  7. Jonathan NiederOct 21, 2010
  8. Johan HerlandOct 21, 2010
  9. Jonathan NiederOct 21, 2010
  10. Johan HerlandOct 22, 2010
  11. 06/21 notes.h/c: Propagate combine_notes_fn return value to add_note() and beyondJohan Herland, Oct 21, 2010
  12. Jonathan NiederOct 21, 2010
  13. Johan HerlandOct 21, 2010
  14. 07/21 (trivial) t3303: Indent with tabs instead of spaces for consistencyJohan Herland, Oct 21, 2010
  15. 08/21 notes.c: Use two newlines (instead of one) when concatenating notesJohan Herland, Oct 21, 2010
  16. 09/21 builtin/notes.c: Split notes ref DWIMmery into a separate functionJohan Herland, Oct 21, 2010
  17. 10/21 git notes merge: Initial implementation handling trivial merges onlyJohan Herland, Oct 21, 2010
  18. 11/21 builtin/notes.c: Refactor creation of notes commits.Johan Herland, Oct 21, 2010
  19. 12/21 git notes merge: Handle real, non-conflicting notes mergesJohan Herland, Oct 21, 2010
  20. 13/21 git notes merge: Add automatic conflict resolvers (ours, theirs, union)Johan Herland, Oct 21, 2010
  21. 14/21 Documentation: Preliminary docs on 'git notes merge'Johan Herland, Oct 21, 2010
  22. 15/21 git notes merge: Manual conflict resolution, part 1/2Johan Herland, Oct 21, 2010
  23. 16/21 git notes merge: Manual conflict resolution, part 2/2Johan Herland, Oct 21, 2010
  24. 17/21 git notes merge: List conflicting notes in notes merge commit messageJohan Herland, Oct 21, 2010
  25. 18/21 git notes merge: --commit should fail if underlying notes ref has movedJohan Herland, Oct 21, 2010
  26. 19/21 git notes merge: Add another auto-resolving strategy: "cat_sort_uniq"Johan Herland, Oct 21, 2010
  27. 20/21 git notes merge: Add testcases for merging notes trees at different fanoutsJohan Herland, Oct 21, 2010
  28. 21/21 Provide 'git notes get-ref' to easily retrieve current notes refJohan Herland, Oct 21, 2010
  29. Sverre RabbelierOct 21, 2010
  30. Junio C HamanoOct 21, 2010
  31. Jonathan NiederOct 21, 2010
  32. git merge --abort? [was: Re: [PATCHv4 00/21] git notes merge]Johan Herland, Oct 22, 2010
  33. Jonathan NiederOct 22, 2010
  34. Johan HerlandOct 22, 2010
  35. Sverre RabbelierOct 22, 2010
  36. Jonathan NiederOct 22, 2010
  37. Sverre RabbelierOct 22, 2010
  38. Johan HerlandOct 22, 2010
  39. Sverre RabbelierOct 22, 2010
  40. Johan HerlandOct 23, 2010
  41. Sverre RabbelierOct 23, 2010
  42. Johan HerlandOct 22, 2010
  43. Sverre RabbelierOct 23, 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.