{"thread":{"id":"27953","subject":"[RFC] plumbing git-notes","startedAt":"2011-07-29T13:24:38Z","lastAt":"2011-07-29T13:24:38Z","messageCount":1,"participants":["Dmitry Ivankov"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"172342","messageId":"CA+gfSn_ay555SCfW=BzcF=73GpG1fckQoiAzpGcR-J5AyoV-mw@mail.gmail.com","threadId":"27953","inReplyTo":null,"subject":"[RFC] plumbing git-notes","fromName":"Dmitry Ivankov","fromEmail":"divanorama@gmail.com","sentAt":"2011-07-29T13:24:38Z","receivedAt":"2011-07-29T13:24:38Z","isPatch":false,"sender":{"key":"divanorama@gmail.com","avatar":"https://avatars.githubusercontent.com/u/158999?v=4"},"body":"Hi,\n\nCurrently git accepts notes tree specification only as a ref under ref/notes/.\nWe can't say\nGIT_NOTES_DISPLAY_REF=  GIT_NOTES_REF= \\\n  git log --show-notes=refs/notes/commits^\n# this one is weird, we neither say \"ref is invalid\" nor show the notes\nor\nGIT_NOTES_DISPLAY_REF=  GIT_NOTES_REF= \\\n  git log --show-notes=`git rev-parse refs/notes/commits`\n\nThere is a problem if for some plumbing we'd want to read or write notes\nfrom some other place. From a temporary branch for example. A remote\nhelper may want to utilize notes as a private map from objects to some\ndata that is not a part of commit (say it can change for old objects, like\nrevprops in svn). And also it may want to expose this map.\n\nAnother problem is working with a notes tree like with a regular tree.\nMerging, rebasing, etc can be done, but we can't map temporary\nnotes revs to objects, unless they are kept as refs/notes/some_tmp_note.\n\nOne more question is the notes for a remote repository. We don't clone\nrefs/notes/ by default, but where do we keep them if we'd want them to\nbe tracked?\nrefs/remotes/origin/notes/\nrefs/notes/remotes/origin/\nrefs/notes/origin/\nrefs/remote-notes/origin/\nrefs/notes/user_decides_which\n\nWe have remote refspec defaults:\nrefs/heads/*:refs/remotes/origin*\nrefs/tags/*:refs/tags/*.\nWhat will be the destination for:\nrefs/notes/*?\n\nBtw, isn't it a bug:\n(git init a && cd a && touch a && git add a && git commit -m a && git tag 123)\n(git init b && cd b && touch b && git add b && git commit -m b && git tag 123)\n(cd a && git remote add b ../a && git remote update)\nFetching b\nFrom ../a\n * [new branch]      master     -> b/master\n# we didn't store refs/tags/123 from b to anywhere and didn't say\nanything about it\n"}]}