On 8/31/2010 11:07 AM, Johan Herland wrote: > On Tuesday 31 August 2010, Stefan Naewe wrote: >> Hi, >> >> I was playing around with 'git notes' these days (after reading S.Chacons >> post to this list and hist blog post at progit.org). >> >> Some things came to my mind when doing some 'git notes add' and >> 'git notes remove': >> >> How do I really get rid of git notes ? 'git notes remove' doesn't really >> remove the notes but creates a new commit (like 'git rm file ; git >> commit..' does). > > Well, how do you "really" get rid of a file on a "regular" Git branch? The > answer is that Git doesn't let you do this without rewriting history (e.g. > using 'git filter-branch' to create a new history where that file never > existed). The same argument goes for notes: If you want to remove all traces > of notes for a given object, you must rewrite the notes history so that > those notes never existed. OK. Understood. > At least that's how the 'git notes' porcelain behaves. At the plumbing > level, it's possible to create notes commits that don't point to the > preceding notes history (every notes commit is a root commit), and thus end > up with "history-less" notes. An example of this is the notes-cache code. > >> And why does 'git remove' do that repetetively (is that even a word...?), >> i.e. 'git add -m"Note" ; git remove; git remove; git remove; git remove' >> creates 5 commit objects under 'refs/notes/commits' Is that the intended >> behaviour ? > > (I assume your meant to put "notes" in all those commands: git notes add, > git notes remove, etc.) Yes, sorry. > Yes, this is the intended behaviour. Otherwise you would need a separate > notes index where you could stage notes changes (with git notes add/remove), > and then later commit those notes changes with (the imaginary) git notes > commit. This was deemed too cumbersome/complicated, and we settled for the > current approach instead. But if I do: $ touch file ; git add file ; git commit -m"add file" and then $ for n in 1 2 3; do git rm file; git commit -m"rm file"; done I get: rm 'file' [master 5b24511] rm file 0 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 file fatal: pathspec 'file' did not match any files # On branch master nothing to commit (working directory clean) fatal: pathspec 'file' did not match any files # On branch master nothing to commit (working directory clean) I don't get 4 commits. That's the part I don't understand :-( > If you want to make several adds/removes per notes commit, you could: > > 1. Use git-fast-import and its 'N' command (search the manual page for > "notemodify"). OK. Thanks. Didn't know that. > 2. Check out the notes ref into your working tree ("git checkout > refs/notes/commits"). You can now edit notes directly, like you would edit > your "regular" files. (Ideally, you should have some knowledge about the > format of notes trees before you add/rename files). When you're done, you > stage and commit as you would do in your regular checkout. OK. I already tried that. And to delete the 'notes branch' I can only use 'git update-ref' ?! Thanks for your answer Stefan -- ---------------------------------------------------------------- /dev/random says: Nostalgia isn't what it used to be. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html