threads / rfc / 27953

[RFC] plumbing git-notes

Subject: [RFC] plumbing git-notes

## tl;dr

One message between Jul 29, 2011 and Jul 29, 2011.

replies: 0people: 1as markdown or json

Dmitry Ivankov· Jul 29, 2011, 13:24 UTC · lore
Hi,
Currently git accepts notes tree specification only as a ref under ref/notes/.
We can't say
GIT_NOTES_DISPLAY_REF=  GIT_NOTES_REF= \
  git log --show-notes=refs/notes/commits^
# this one is weird, we neither say "ref is invalid" nor show the notes
or
GIT_NOTES_DISPLAY_REF=  GIT_NOTES_REF= \
  git log --show-notes=`git rev-parse refs/notes/commits`

There is a problem if for some plumbing we'd want to read or write notes from some other place. From a temporary branch for example. A remote helper may want to utilize notes as a private map from objects to some data that is not a part of commit (say it can change for old objects, like revprops in svn). And also it may want to expose this map.

Another problem is working with a notes tree like with a regular tree. Merging, rebasing, etc can be done, but we can't map temporary notes revs to objects, unless they are kept as refs/notes/some_tmp_note.

One more question is the notes for a remote repository. We don't clone refs/notes/ by default, but where do we keep them if we'd want them to be tracked? refs/remotes/origin/notes/ refs/notes/remotes/origin/ refs/notes/origin/ refs/remote-notes/origin/ refs/notes/user_decides_which

We have remote refspec defaults: refs/heads/*:refs/remotes/origin* refs/tags/*:refs/tags/*. What will be the destination for: refs/notes/*?

Btw, isn't it a bug:
(git init a && cd a && touch a && git add a && git commit -m a && git tag 123)
(git init b && cd b && touch b && git add b && git commit -m b && git tag 123)
(cd a && git remote add b ../a && git remote update)
Fetching b
From ../a
 * [new branch]      master     -> b/master
# we didn't store refs/tags/123 from b to anywhere and didn't say
anything about it

← back to recent threads