From: Johan Herland <johan@herland.net>
To: gitster@pobox.com
Cc: git@vger.kernel.org, johan@herland.net
Subject: [PATCHv12 00/23] git notes
Date: Wed, 27 Jan 2010 12:51:37 +0100 [thread overview]
Message-ID: <1264593120-4428-1-git-send-email-johan@herland.net> (raw)
Hi,
Here is the 12th iteration of the git-notes series. Changes in this
iteration are as follows:
- Rebased onto 67bc740... (Merge branch 'jc/maint-limit-note-output') to adjust
for the fixes limiting the eagerness of log and friends to show notes.
- Patches #2, #3, #10, #12, #17 and #20 resolved conflicts while rebasing.
- Patch #12 has been changed to call die() instead of fprintf(stderr, ...)
followed by exit(1). Thanks to Stephen Boyd for the suggestion.
- Patches #17 and #18 have been changed to add a new "git notes remove"
subcommand instead of a "git notes edit -d" option.
- Patch #19 has renamed gc_notes() to prune_notes().
- Patch #20 (which added "git gc --notes") has been replaced by a patch adding
the equivalent "git notes prune" subcommand.
- Patch #21 is a new patch revamping the git-notes documentation to talk about
'object' notes instead of 'commit' notes.
- Patch #22 is a new patch adding the "git notes list" command for listing
notes and the objects they annotate.
- Patch #23 is a new patch adding the "git notes add" command for appending
contents to notes (instead of editing/replacing).
STILL TODO:
- Suggestion by Matthieu Moy and Sverre Rabbelier:
Add notes support to git-format-patch, where note contents in
refs/notes/format-patch are added to the "comments section"
(i.e. following the '---' separator) of generated patches.
- Better integration with rebase/amend/cherry-pick. Optionally bring
notes across a commit rewrite. Controlled by command-line options
and/or config variables. Add "git notes move" and "git notes copy"
to suit. Junio says:
I used to fix minor issues (styles, decl-after-stmt, etc.) using
rebase-i long after running "am" in bulk, but these days I find
myself going back to my "inbox" and fix them in MUA; this is
only because I know these notes do not propagate across rebases
and amends -- adjusting the workflow to the tool's limitation is
not very good.
- Junio says:
The interface to tell tools to use which notes ref to use should be
able to say "these refs", not just "this ref" i.e. GIT_NOTES_REF=a:b
just like PATH=a:b:c...); I am fairly certain that we would want to
store different kind of information in separate notes trees and
aggregate them, as we gain experience with notes.
- Junio says:
There should be an interface to tell tools to use which notes refs via
command line options; "!alias" does not TAB-complete, and "git lgm"
above doesn't, either. "git log --notes=notes/amlog --notes=notes/other"
would probably be the way to go.
- Add a "git notes grep" subcommand: Junio says:
While reviewing the "inbox", I sometimes wonder if I applied a message
to somewhere already, but there is no obvious way to grep in the notes
tree and get the object name that a note is attached to. Of course I
know I can "git grep -c johan@herland.net notes/amlog" and it will give
me something like:
notes/amlog:65807ee697a28cb30b8ad38ebb8b84cebd3f255d:1
notes/amlog:c789176020d6a008821e01af8b65f28abc138d4b:1
but this won't scale and needs scripting to mechanize, once we start
rebalancing the notes tree with different fan-outs. The end user (me
in this case) is interested in "set of objects that match this grep
criteria", not "the pathnames the notes tree's implementation happens
to use to store notes for them in the hierarchy".
- Handle note objects that are not blobs, but trees
(- Rewrite fast-import notes code to use new notes API with non-note support)
Have fun! :)
...Johan
Johan Herland (23):
Minor non-functional fixes to notes.c
Notes API: get_commit_notes() -> format_note() + remove the commit restriction
Add tests for checking correct handling of $GIT_NOTES_REF and core.notesRef
Notes API: init_notes(): Initialize the notes tree from the given notes ref
Notes API: add_note(): Add note objects to the internal notes tree structure
Notes API: remove_note(): Remove note objects from the notes tree structure
Notes API: get_note(): Return the note annotating the given object
Notes API: for_each_note(): Traverse the entire notes tree with a callback
Notes API: write_notes_tree(): Store the notes tree in the database
Notes API: Allow multiple concurrent notes trees with new struct notes_tree
Refactor notes concatenation into a flexible interface for combining notes
Builtin-ify git-notes
t3301: Verify successful annotation of non-commits
t3305: Verify that adding many notes with git-notes triggers increased fanout
Teach notes code to properly preserve non-notes in the notes tree
Teach builtin-notes to remove empty notes
builtin-notes: Add "remove" subcommand for removing existing notes
t3305: Verify that removing notes triggers automatic fanout consolidation
Notes API: prune_notes(): Prune notes that belong to non-existing objects
builtin-notes: Add "prune" subcommand for removing notes for missing objects
Documentation: Generalize git-notes docs to 'objects' instead of 'commits'
builtin-notes: Add "list" subcommand for listing note objects
builtin-notes: Add "add" subcommand for appending to note objects
Documentation/git-notes.txt | 60 ++-
Makefile | 2 +-
builtin-notes.c | 301 +++++++++
builtin.h | 3 +
git-notes.sh => contrib/examples/git-notes.sh | 0
git.c | 1 +
notes.c | 843 +++++++++++++++++++++----
notes.h | 192 ++++++-
pretty.c | 9 +-
t/t3301-notes.sh | 262 +++++++-
t/t3303-notes-subtrees.sh | 28 +-
t/t3304-notes-mixed.sh | 36 +-
t/t3305-notes-fanout.sh | 95 +++
t/t3306-notes-prune.sh | 94 +++
14 files changed, 1737 insertions(+), 189 deletions(-)
create mode 100644 builtin-notes.c
rename git-notes.sh => contrib/examples/git-notes.sh (100%)
create mode 100755 t/t3305-notes-fanout.sh
create mode 100755 t/t3306-notes-prune.sh
next reply other threads:[~2010-01-27 11:53 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-27 11:51 Johan Herland [this message]
2010-01-27 11:51 ` [PATCHv12 01/23] Minor non-functional fixes to notes.c Johan Herland
2010-01-27 21:20 ` Junio C Hamano
2010-01-27 22:33 ` Johan Herland
2010-01-27 11:51 ` [PATCHv12 02/23] Notes API: get_commit_notes() -> format_note() + remove the commit restriction Johan Herland
2010-01-27 11:51 ` [PATCHv12 03/23] Add tests for checking correct handling of $GIT_NOTES_REF and core.notesRef Johan Herland
2010-01-27 11:51 ` [PATCHv12 04/23] Notes API: init_notes(): Initialize the notes tree from the given notes ref Johan Herland
2010-01-27 11:51 ` [PATCHv12 05/23] Notes API: add_note(): Add note objects to the internal notes tree structure Johan Herland
2010-01-27 11:51 ` [PATCHv12 06/23] Notes API: remove_note(): Remove note objects from the " Johan Herland
2010-01-27 11:51 ` [PATCHv12 07/23] Notes API: get_note(): Return the note annotating the given object Johan Herland
2010-01-27 11:51 ` [PATCHv12 08/23] Notes API: for_each_note(): Traverse the entire notes tree with a callback Johan Herland
2010-01-27 11:51 ` [PATCHv12 09/23] Notes API: write_notes_tree(): Store the notes tree in the database Johan Herland
2010-01-27 11:51 ` [PATCHv12 10/23] Notes API: Allow multiple concurrent notes trees with new struct notes_tree Johan Herland
2010-01-27 11:51 ` [PATCHv12 11/23] Refactor notes concatenation into a flexible interface for combining notes Johan Herland
2010-01-27 11:51 ` [PATCHv12 12/23] Builtin-ify git-notes Johan Herland
2010-01-27 11:51 ` [PATCHv12 13/23] t3301: Verify successful annotation of non-commits Johan Herland
2010-01-27 11:51 ` [PATCHv12 14/23] t3305: Verify that adding many notes with git-notes triggers increased fanout Johan Herland
2010-01-27 11:51 ` [PATCHv12 15/23] Teach notes code to properly preserve non-notes in the notes tree Johan Herland
2010-01-27 11:51 ` [PATCHv12 16/23] Teach builtin-notes to remove empty notes Johan Herland
2010-01-27 11:51 ` [PATCHv12 17/23] builtin-notes: Add "remove" subcommand for removing existing notes Johan Herland
2010-01-27 11:51 ` [PATCHv12 18/23] t3305: Verify that removing notes triggers automatic fanout consolidation Johan Herland
2010-01-27 11:51 ` [PATCHv12 19/23] Notes API: prune_notes(): Prune notes that belong to non-existing objects Johan Herland
2010-01-27 11:51 ` [PATCHv12 20/23] builtin-notes: Add "prune" subcommand for removing notes for missing objects Johan Herland
2010-01-27 11:51 ` [PATCHv12 21/23] Documentation: Generalize git-notes docs to 'objects' instead of 'commits' Johan Herland
2010-01-27 11:51 ` [PATCHv12 22/23] builtin-notes: Add "list" subcommand for listing note objects Johan Herland
2010-01-27 11:52 ` [PATCHv12 23/23] builtin-notes: Add "add" subcommand for appending to " Johan Herland
2010-01-27 20:00 ` [PATCHv12 00/23] git notes Junio C Hamano
2010-01-27 20:18 ` Sverre Rabbelier
2010-01-27 23:05 ` Johan Herland
2010-01-28 0:02 ` Junio C Hamano
2010-01-28 1:17 ` Johan Herland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1264593120-4428-1-git-send-email-johan@herland.net \
--to=johan@herland.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).