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

Re: [PATCH 1/4] gitweb: notes feature

From
Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Date
Feb 4, 2010, 20:08 UTC
Message-ID
<cb7bb73a1002041208q54ff1f57y3202e88ae2f5f44e@mail.gmail.com>
In-Reply-To
<201002041821.22864.jnareb@gmail.com>
On Thu, Feb 4, 2010 at 6:21 PM, Jakub Narebski <jnareb@gmail.com> wrote:
Show 28 quoted lines
> On Thu, 4 Feb 2010, Junio C Hamano wrote:
>> Junio C Hamano <gitster@pobox.com> writes:
>>
>>> Giuseppe Bilotta <giuseppe.bilotta@gmail.com> writes:
>>>
>>>> +           my %notes = () ;
>>>> +           foreach my $note_ref (@note_refs) {
>>>> +                   my $obj = "$note_ref:$co{'id'}";
>>>
>>> I think this look-up is wrong (meaning: will stop working anytime in the
>>> future, and needs to be rewritten).
>>
>> IOW, the code should be reading output from:
>>
>>     GIT_NOTES_REF=$note_ref git show -s --format=%N $co{'id'}
>>
>> as the notes tree may not be storing notes in a flat one-level namespace
>> like you are assuming.
>
> First, for some mechanism of deployment (IIRC Apache's mod_perl) changes
> to environment variables from CGI script are not passed to invoked
> commands (I guess for security reasons).  That is why gitweb uses --git-dir
> parameter to git wrapper, and not GIT_DIR environment variable since
> 25691fb (gitweb: Use --git-dir parameter instead of setting $ENV{'GIT_DIR'},
> 2006-08-28).  So for proper support we would need --notes-ref (or similar)
> option to git wrapper
>
>  git --notes-ref=$note_ref show -s --format=%N $co{'id'}

As I mentioned on the cover letter, I was hoping to be able to make something that could be deployable without requiring core changes and thus a specific minimum git version. I do realize however that this is inherently not robust (unless the code is updated if and when the notes storage mechanism changes).

The wrapper is probably needed anyway, I would say, so it makes sense to implement it. However, see below for a caveat about its implementation.

Show 11 quoted lines
> Second, parse_commit / parse_commits use
>
>  git rev-list -z --parents --header --max-count-X
>
> If this command automatically shows notes (or it can be modified to
> automatically show notes) after unindented "Notes:" line (as per
> git-notes documentation), then the only thing that needs to be
> changed to fill %commit{'notes'} is parse_commit_text subroutine.
>
> There would be no need for extra subroutine (and extra command, or
> even up to two extra commands per note) to get notes data.

But unless the --notes-ref is made to accept multiple refspecs, this will only access _one_ note namespace. It is not hard to envision situations where multiple namespaces are used for the same repo (e.g. one to store git-svn metadata, one for bugzilla-related entries), in which case you'd want _all_ of them to be accessible in gitweb.

And if we do support multiple refspecs for --notes-ref, we also need some way to identify which note belongs to which namespace, of course, in any of the output formats that include notes.

An alternative approach would be some git notes-list command that accepts both multiple namespaces and multiple commits, and is specifically dedicated to display notes-commits relationships (together with notes content, obviously)

-- 
Giuseppe "Oblomov" Bilotta
Previous: Jakub NarebskiNext: Junio C Hamano
Message 6 of 47 in “gitweb: preliminary notes support”
  1. 0/4 gitweb: preliminary notes supportGiuseppe Bilotta, Feb 4, 2010
  2. 1/4 gitweb: notes featureGiuseppe Bilotta, Feb 4, 2010
  3. Junio C HamanoFeb 4, 2010
  4. Junio C HamanoFeb 4, 2010
  5. Jakub NarebskiFeb 4, 2010
  6. Giuseppe BilottaFeb 4, 2010
  7. Junio C HamanoFeb 4, 2010
  8. Giuseppe BilottaFeb 4, 2010
  9. Johan HerlandFeb 5, 2010
  10. Junio C HamanoFeb 5, 2010
  11. Giuseppe BilottaFeb 5, 2010
  12. Junio C HamanoFeb 5, 2010
  13. Giuseppe BilottaFeb 6, 2010
  14. Junio C HamanoFeb 4, 2010
  15. Jakub NarebskiFeb 4, 2010
  16. Jakub NarebskiFeb 5, 2010
  17. Junio C HamanoFeb 5, 2010
  18. Giuseppe BilottaFeb 5, 2010
  19. Jakub NarebskiFeb 5, 2010
  20. Giuseppe BilottaFeb 6, 2010
  21. Jakub NarebskiFeb 6, 2010
  22. Giuseppe BilottaFeb 6, 2010
  23. Jakub NarebskiFeb 7, 2010
  24. Jakub NarebskiFeb 7, 2010
  25. Johan HerlandFeb 7, 2010
  26. Jakub NarebskiFeb 7, 2010
  27. Giuseppe BilottaFeb 7, 2010
  28. Jakub NarebskiFeb 7, 2010
  29. Junio C HamanoFeb 7, 2010
  30. Giuseppe BilottaFeb 7, 2010
  31. Jakub NarebskiFeb 7, 2010
  32. Giuseppe BilottaFeb 7, 2010
  33. Jakub NarebskiFeb 7, 2010
  34. 2/4 gitweb: show notes in shortlog viewGiuseppe Bilotta, Feb 4, 2010
  35. Jakub NarebskiFeb 6, 2010
  36. Giuseppe BilottaFeb 6, 2010
  37. 3/4 gitweb: show notes in logGiuseppe Bilotta, Feb 4, 2010
  38. Jakub NarebskiFeb 6, 2010
  39. Giuseppe BilottaFeb 6, 2010
  40. Jakub NarebskiFeb 6, 2010
  41. 4/4 gitweb: show notes in commit(diff) viewGiuseppe Bilotta, Feb 4, 2010
  42. Jakub NarebskiFeb 6, 2010
  43. Giuseppe BilottaFeb 6, 2010
  44. Jakub NarebskiFeb 6, 2010
  45. Giuseppe BilottaFeb 6, 2010
  46. Jakub NarebskiFeb 6, 2010
  47. Giuseppe BilottaFeb 6, 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.