From: "Shawn O. Pearce" <spearce@spearce.org>
To: Robin Rosenberg <robin.rosenberg@dewire.com>
Cc: git@vger.kernel.org
Subject: Re: [EGIT PATCH] Avoid breaking the walk prematurely
Date: Mon, 24 Nov 2008 16:12:01 -0800 [thread overview]
Message-ID: <20081125001201.GH2932@spearce.org> (raw)
In-Reply-To: <1227570348-20092-1-git-send-email-robin.rosenberg@dewire.com>
Robin Rosenberg <robin.rosenberg@dewire.com> wrote:
> The optimization broke the walk when all changes we adds, assuming
> the parent was an empty tree. This assumption was wrong. The tree does
> not have to bee empty, it can contain other trees and blobs.
>
> http://code.google.com/p/egit/issues/detail?id=46
>
> Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
> ---
> .../spearce/jgit/revwalk/RewriteTreeFilter.java | 7 -------
> 1 files changed, 0 insertions(+), 7 deletions(-)
>
> We could introduce a fixed version later on if we supply an option to select
> whether to optimize the walk this way. The problem with doing it without an
> option is that imports from legacy SCMs do not necessarily record file moves
> as add/removes in direct sucession, but other events may happen in beteens
> for various reasons.
This is a fairly useful optimization in git. Most people use it,
because most people don't pass "--full-history" when they run
"git log -- path". So I think we really want to do it by default
in jgit.
Enabling this optimization again probably requires adding a new
method to TreeFilter which allows the filter graph to return only
nodes which select paths by name, and then do something like:
else if (chgs == adds && isPathSetEmpty(c.getTree())) {
c.parents = RevCommit.NO_PARENTS;
return true;
}
where isPathSetEmpty runs a second TreeWalk iteration but uses the
new (smaller) filter graph that only matches on paths.
I'm not going to write that out today. But I thought I'd at least
write an email while the idea was fresh in my head.
--
Shawn.
prev parent reply other threads:[~2008-11-25 0:13 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-24 23:45 [EGIT PATCH] Avoid breaking the walk prematurely Robin Rosenberg
2008-11-25 0:12 ` Shawn O. Pearce [this message]
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=20081125001201.GH2932@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=robin.rosenberg@dewire.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.