From: Johan Herland <johan@herland.net>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: git@vger.kernel.org, Joey Hess <joey@kitenet.net>
Subject: Re: git-union-merge proposal
Date: Tue, 21 Jun 2011 09:34:33 +0200 [thread overview]
Message-ID: <201106210934.34025.johan@herland.net> (raw)
In-Reply-To: <20110621052211.GA16919@elie>
On Tuesday 21 June 2011, Jonathan Nieder wrote:
> Joey Hess wrote[1]:
> > * git notes merge -s cat_sort_uniq
> >
> > Notes are stored in a tree using the object sha, which can be
> > union merged, when the notes' format is a series of independant
> > lines.
> >
> > [...]
> >
> > So I've written a prototype of a git-union-merge that could be used
> > for all of these. It works like this:
> >
> > git union-merge foo origin/foo refs/heads/foo
>
> [...]
>
> If the prototype were self-contained, I would encourage you to submit
> it for inclusion under contrib/ so it can evolve and eventually
> graduate out of there. Cc-ing Johan (who has no doubt thought through
> these things in the context of "git notes") in case he has thoughts on
> it.
Thanks for the CC.
I must confess that my Haskell skills are exactly nil, but AFAICS the script
depends on the filename as the only criteria to identify files that need a
line-level merge. How does the script deal with renamed and copied files?
If you depend on the filename only, this script simply will not work for
notes. The notes tree reorganizes itself dynamically for optimum
performance, and this affects how notes trees can be merged.
E.g. given a note for object 01234567..., this note may exist as
"01234567..." in one notes tree, while it may exist as "01/234567..." in a
bigger notes tree, or even "01/23/4567..." in an even bigger notes tree.
Even though the filenames differ, they all refer to the same note, and you
cannot merge notes trees correctly without taking that fact into account.
Furthermore, if you (union-)merge two notes trees that both have
"01/234567...", the result does not necessarily belong in "01/234567...". It
could be that the sum/union of the two notes trees have pushed the number of
notes in the result so high that "01/23/4567..." is now a more optimal name
for this note.
...Johan
--
Johan Herland, <johan@herland.net>
www.herland.net
next prev parent reply other threads:[~2011-06-21 7:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-21 2:20 git-union-merge proposal Joey Hess
2011-06-21 5:22 ` Jonathan Nieder
2011-06-21 7:34 ` Johan Herland [this message]
2011-06-21 16:10 ` Joey Hess
2011-06-21 17:44 ` Junio C Hamano
2011-06-21 18:12 ` Junio C Hamano
2011-06-21 18:41 ` Joey Hess
2011-06-21 20:19 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201106210934.34025.johan@herland.net \
--to=johan@herland.net \
--cc=git@vger.kernel.org \
--cc=joey@kitenet.net \
--cc=jrnieder@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).