From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Davide Libenzi <davidel@xmailserver.org>
Cc: Pierre Habouzit <madcoder@debian.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Francis Galiegue <fg@one2team.net>, Git ML <git@vger.kernel.org>
Subject: Re: [PATCH v3 1/3] Implement the patience diff algorithm
Date: Wed, 7 Jan 2009 21:19:12 +0100 (CET) [thread overview]
Message-ID: <alpine.DEB.1.00.0901072110340.7496@intel-tinevez-2-302> (raw)
In-Reply-To: <alpine.DEB.1.10.0901071159060.17115@alien.or.mcafeemobile.com>
Hi,
On Wed, 7 Jan 2009, Davide Libenzi wrote:
> On Wed, 7 Jan 2009, Johannes Schindelin wrote:
>
> > Could it be that you misread my patch, and assumed that I faked an
> > xdfenv?
> >
> > I did not, but instead faked two mmfiles, which is only as simple as I did
> > it because in git.git, we only have contiguous mmfiles. (I recall that
> > libxdiff allows for ropes instead of arrays.)
> >
> > The way I did it has one big shortcoming: I need to prepare an xdfenv for
> > the subfiles even if I already prepared one for the complete files. IOW
> > the lines are rehashed all over again.
>
> I told you I just glanced at the code :)
> In that way, if you guys decide to merge this new algo, you'll need to
> split the prepare from the optimize, and feed it with an already prepared
> env.
Right.
> Before going that way, have you ever tried to tweak xdl_cleanup_records
> and xdl_clean_mmatch to reduce the level of optimization, and see the
> results you get? It is possible that you won't need two different algos
> inside git.
No, I hadn't thought that libxdiff already determines uniqueness before
actually running xdl_do_diff().
I also have to admit that I am not as clever as other people, and had
quite a hard time figuring out as much as I did (for example, that rchg[i]
== 1 means that this line is to be added/deleted, and that i is in the
range 0, ..., N - 1 rather than 1, ..., N).
So it is quite possible that something patience-like can be done earlier.
However, I do not see a way to implement the recursion necessary for the
patience diff. Remember:
patience(line range):
find unique lines
if no unique lines found:
resort to classical diff
return
extract the longest common sequence of unique common lines
between those, recurse
When recursing, previously non-unique lines can turn unique, of course.
And I do not see how that recursion could be done before
xdl_clean_mmatch(), short of redoing the hashing and cleaning records up.
Of course, it might well be possible, but I am already out of my depth
reading something like "rdis0" and "rpdis1", and being close to despair.
:')
Ciao,
Dscho
next prev parent reply other threads:[~2009-01-07 20:20 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-04 0:40 libxdiff and patience diff Pierre Habouzit
2008-11-04 3:17 ` Davide Libenzi
2008-11-04 8:33 ` Pierre Habouzit
2008-11-04 5:39 ` Johannes Schindelin
2008-11-04 8:30 ` Pierre Habouzit
2008-11-04 14:34 ` Johannes Schindelin
2008-11-04 15:23 ` Pierre Habouzit
2008-11-04 15:57 ` Johannes Schindelin
2008-11-04 16:15 ` Pierre Habouzit
2009-01-01 16:38 ` [PATCH 0/3] Teach Git about the patience diff algorithm Johannes Schindelin
2009-01-01 16:38 ` [PATCH 1/3] Implement " Johannes Schindelin
2009-01-01 16:39 ` [PATCH 2/3] Introduce the diff option '--patience' Johannes Schindelin
2009-01-01 16:39 ` [PATCH 3/3] bash completions: Add the --patience option Johannes Schindelin
2009-01-01 19:45 ` [PATCH 0/3] Teach Git about the patience diff algorithm Linus Torvalds
2009-01-01 20:00 ` Linus Torvalds
2009-01-02 18:17 ` Johannes Schindelin
2009-01-02 18:49 ` Linus Torvalds
2009-01-02 19:07 ` Johannes Schindelin
2009-01-02 18:51 ` Jeff King
2009-01-02 21:59 ` [PATCH 1/3 v2] Implement " Johannes Schindelin
2009-01-02 21:59 ` Johannes Schindelin
2009-01-01 20:46 ` [PATCH 0/3] Teach Git about " Adeodato Simó
2009-01-02 1:56 ` Linus Torvalds
2009-01-02 10:55 ` Clemens Buchacher
2009-01-02 10:58 ` Clemens Buchacher
2009-01-02 16:42 ` Linus Torvalds
2009-01-02 18:46 ` Johannes Schindelin
2009-01-02 19:03 ` Linus Torvalds
2009-01-02 19:22 ` Johannes Schindelin
2009-01-02 19:39 ` Jeff King
2009-01-02 19:50 ` Jeff King
2009-01-02 20:52 ` Jeff King
2009-01-02 23:05 ` Linus Torvalds
2009-01-03 16:24 ` Bazaar's patience diff as GIT_EXTERNAL_DIFF Adeodato Simó
2009-01-02 21:59 ` [PATCH 0/3] Teach Git about the patience diff algorithm Johannes Schindelin
2009-01-08 19:55 ` Adeodato Simó
2009-01-08 20:06 ` Adeodato Simó
2009-01-09 6:54 ` Junio C Hamano
2009-01-09 13:07 ` Johannes Schindelin
2009-01-09 15:59 ` Adeodato Simó
2009-01-09 18:09 ` Linus Torvalds
2009-01-09 18:13 ` Linus Torvalds
2009-01-09 20:53 ` Junio C Hamano
2009-01-10 11:36 ` Johannes Schindelin
2009-01-02 11:03 ` Junio C Hamano
2009-01-02 18:50 ` Adeodato Simó
2009-01-06 11:17 ` Pierre Habouzit
2009-01-06 11:39 ` Pierre Habouzit
2009-01-06 19:40 ` Johannes Schindelin
2009-01-07 14:39 ` Pierre Habouzit
2009-01-07 17:01 ` Johannes Schindelin
2009-01-07 17:04 ` [PATCH v3 1/3] Implement " Johannes Schindelin
2009-01-07 18:10 ` Davide Libenzi
2009-01-07 18:32 ` Johannes Schindelin
2009-01-07 20:09 ` Davide Libenzi
2009-01-07 20:19 ` Johannes Schindelin [this message]
2009-01-07 18:59 ` Linus Torvalds
2009-01-07 20:00 ` Johannes Schindelin
2009-01-07 20:11 ` Davide Libenzi
2009-01-07 20:15 ` [PATCH 0/3] Teach Git about " Sam Vilain
2009-01-07 20:25 ` Linus Torvalds
2009-01-08 2:31 ` Sam Vilain
2009-01-07 20:38 ` Johannes Schindelin
2009-01-07 20:48 ` Junio C Hamano
2009-01-07 22:00 ` Johannes Schindelin
2009-01-07 22:45 ` Pierre Habouzit
2009-01-07 23:03 ` Johannes Schindelin
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=alpine.DEB.1.00.0901072110340.7496@intel-tinevez-2-302 \
--to=johannes.schindelin@gmx.de \
--cc=davidel@xmailserver.org \
--cc=fg@one2team.net \
--cc=git@vger.kernel.org \
--cc=madcoder@debian.org \
--cc=torvalds@linux-foundation.org \
/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