threads / discuss / 22954

Git Notes Usage

Subject: Git Notes Usage

## tl;dr

3 messages between Mar 8, 2010 and Mar 8, 2010.

replies: 2people: 3as markdown or json

Scott Chacon· Mar 8, 2010, 19:52 UTC · lore

I've been trying to write up the git-notes functionality a bit and I'm a tad confused about the remote workflow. To share them, is it only do-able by pushing via the full refspec (ie: 'git push origin refs/notes/*:refs/notes/*')? Likewise to fetch them from a server? Also, if two people write notes into the same namespace at the same time, how does one merge them? Is the only way to do so to actually checkout the notes branch into your working directory and merge the notes trees?

Thanks, Scott

Michael J Gruber· Mar 8, 2010, 20:59 UTC · re: Scott Chacon · lore

Re: Git Notes Usage

Scott Chacon venit, vidit, dixit 08.03.2010 20:52:
> I've been trying to write up the git-notes functionality a bit and I'm
> a tad confused about the remote workflow.  To share them, is it only
> do-able by pushing via the full refspec (ie: 'git push origin
> refs/notes/*:refs/notes/*')?  Likewise to fetch them from a server?

You can also write this into the config... OK, seriously: I think for "typical usage" one stores others' notes in a different place anyways, e.g. I store Thomas' list-notes in refs/remotes/trast/notes/ so that they don't interfer with my own notes.

I don't think that teaching --notes to git push (a la --tags) with a standard refspec would help in many cases.

> Also, if two people write notes into the same namespace at the
> same time, how does one merge them?  Is the only way to do so to
> actually checkout the notes branch into your working directory and
> merge the notes trees?
I'd say every merge needs a working directory, so, yes.
Michael
Junio C Hamano· Mar 8, 2010, 23:20 UTC · re: Michael J Gruber · lore

Re: Git Notes Usage

Michael J Gruber <git@drmicha.warpmail.net> writes:
Show 6 quoted lines
>> Also, if two people write notes into the same namespace at the
>> same time, how does one merge them?  Is the only way to do so to
>> actually checkout the notes branch into your working directory and
>> merge the notes trees?
>
> I'd say every merge needs a working directory, so, yes.

While that is true in the most general case, I do not necessarily agree that people would use notes that way.

Merging two notes trees would require a lot more than the ordinary merge machinery offers (there is a tree rebalancing logic in notes tree mechanism, and notes specific merge that is yet to be written should take advantage of it) and if one wants to do the merge manually, you would need to check them out in a working tree.

The "notes copy" feature (parked in 'pu') lets you deal with conflicts by allowing you to concatenate (or overwrite) while copying a note for commit Y to another commit X and when X already has a note attached to it. If you think about it, it is merging an old note (that came from emptiness) with a new note (that also came from emptiness) using an emptiness as their common ancestor, i.e. two-tree merge with "union" merge semantics (or "ours" if you say "overwrite", "theirs" if you say "ignore").

I suspect that in practice people would want notes to be resolved more automatically and inclusively (read: union merge) compared to how the normal payload would be merged, without the need to have a checkout in the working tree.

← back to recent threads