Re: 'git notes merge' implementation questions

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: 'git notes merge' implementation questions

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:48:41

Johan Herland [off-list ref] writes:
Next, we will need to be somewhat careful about using "ls-tree", to avoid 
needlessly unpacking subtrees that are identical between <ours> and 
<theirs>.
My mentioning of "ls-tree" is only about what needs to be done at the
conceptual level.  In practice, assuming that notes trees have mostly the
same fan-out structure, you would run "diff-tree -r" of (base,ours) and
(base,theirs) pair _without_ anything fancy like rename detection, and
pick out pieces (one tree may have ab/cdx{36} while the other tree may
have abcd/x{36} that are notes about the same object---you treat this as
if it is a partial ls-tree output that pertains only to the different
parts, and make canonical "list of annotated objects" by removing '/'.

All of this is very specific to merging "notes" and normal "merge" does
not even want to know about it; I don't think you can avoid doing this
yourself without touching "merge" if you want to merge "notes" correctly.

Re: 'git notes merge' implementation questions

From: Johan Herland <hidden>
Date: 2016-06-15 22:48:41

On Thursday 22 April 2010, Junio C Hamano wrote:
Johan Herland [off-list ref] writes:
quoted
Next, we will need to be somewhat careful about using "ls-tree", to
avoid needlessly unpacking subtrees that are identical between <ours>
and <theirs>.
My mentioning of "ls-tree" is only about what needs to be done at the
conceptual level.  In practice, assuming that notes trees have mostly the
same fan-out structure, you would run "diff-tree -r" of (base,ours) and
(base,theirs) pair _without_ anything fancy like rename detection, and
pick out pieces (one tree may have ab/cdx{36} while the other tree may
have abcd/x{36} that are notes about the same object---you treat this as
if it is a partial ls-tree output that pertains only to the different
parts, and make canonical "list of annotated objects" by removing '/'.
Got it. Brilliant, and obvious, really, when I think about it...
All of this is very specific to merging "notes" and normal "merge" does
not even want to know about it; I don't think you can avoid doing this
yourself without touching "merge" if you want to merge "notes" correctly.
Agreed. From your feedback, I now have a much clearer picture on how to 
proceed. Thanks! :)


Have fun!

...Johan

-- 
Johan Herland, [off-list ref]
www.herland.net
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help