From: Elijah Newren <redacted>
Signed-off-by: Elijah Newren <redacted>
---
I'm not certain this testcase will actually trigger the bug for everyone,
since I don't know the order of commits used by git rev-list. It does
trigger it for me. What you need is a history that looks like
B--D
/ /
A--C
with the master branch pointing at D, and have "git rev-list --all" show
these commits in the order
C
D
B
A
If you have such a repository, "git fast-export --all" will give
instructions to create a master branch that only contains D, B, and A.
t/t9301-fast-export.sh | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
From: Elijah Newren <redacted>
fast-export will only list as parents those commits which have already
been traversed (making it appear as if merges have been squashed if not
all parents have been traversed). To avoid this silent squashing of
merge commits, we request commits in topological order.
Signed-off-by: Elijah Newren <redacted>
---
builtin-fast-export.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
From: Johannes Schindelin <hidden> Date: 2016-06-15 22:46:09
Hi,
On Tue, 10 Feb 2009, newren@gmail.com wrote:
quoted hunk
From: Elijah Newren <redacted>
fast-export will only list as parents those commits which have already
been traversed (making it appear as if merges have been squashed if not
all parents have been traversed). To avoid this silent squashing of
merge commits, we request commits in topological order.
Signed-off-by: Elijah Newren <redacted>
---
builtin-fast-export.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
From: Mike Ralphson <hidden> Date: 2016-06-15 22:46:09
On Tue, 10 Feb 2009, newren@gmail.com wrote:
fast-export will only list as parents those commits which have already
been traversed (making it appear as if merges have been squashed if not
all parents have been traversed). To avoid this silent squashing of
merge commits, we request commits in topological order.
Any comparative timings? We don't need to rename this to 'git
reasonably-speedy-export'? 8-)
Mike
From: Johannes Schindelin <hidden> Date: 2016-06-15 22:46:09
Hi,
On Wed, 11 Feb 2009, Mike Ralphson wrote:
quoted
On Tue, 10 Feb 2009, newren@gmail.com wrote:
fast-export will only list as parents those commits which have already
been traversed (making it appear as if merges have been squashed if not
all parents have been traversed). To avoid this silent squashing of
merge commits, we request commits in topological order.
Any comparative timings? We don't need to rename this to 'git
reasonably-speedy-export'? 8-)
What we _could_ do is add proper error handling: fast-export should
recognize that it did not see the commit yet, and error out suggesting
using --topo-order with fast-export.
Ciao,
Dscho
From: Jeff King <hidden> Date: 2016-06-15 22:46:09
On Wed, Feb 11, 2009 at 10:48:18AM +0000, Mike Ralphson wrote:
quoted
On Tue, 10 Feb 2009, newren@gmail.com wrote:
fast-export will only list as parents those commits which have already
been traversed (making it appear as if merges have been squashed if not
all parents have been traversed). To avoid this silent squashing of
merge commits, we request commits in topological order.
Any comparative timings? We don't need to rename this to 'git
reasonably-speedy-export'? 8-)
Hmm.
In git.git:
$ time git fast-export --all --signed-tags=strip >/dev/null
real 1m6.013s
user 1m3.840s
sys 0m2.140s
$ time git fast-export --all --signed-tags=strip --topo-order >/dev/null
real 0m49.018s
user 0m47.987s
sys 0m0.888s
I certainly didn't expect it to be _faster_. More efficient use of the
delta cache, maybe?
-Peff
From: Johannes Schindelin <hidden> Date: 2016-06-15 22:46:09
Hi,
On Wed, 11 Feb 2009, Jeff King wrote:
On Wed, Feb 11, 2009 at 10:48:18AM +0000, Mike Ralphson wrote:
quoted
quoted
On Tue, 10 Feb 2009, newren@gmail.com wrote:
fast-export will only list as parents those commits which have already
been traversed (making it appear as if merges have been squashed if not
all parents have been traversed). To avoid this silent squashing of
merge commits, we request commits in topological order.
Any comparative timings? We don't need to rename this to 'git
reasonably-speedy-export'? 8-)
Hmm.
In git.git:
$ time git fast-export --all --signed-tags=strip >/dev/null
real 1m6.013s
user 1m3.840s
sys 0m2.140s
$ time git fast-export --all --signed-tags=strip --topo-order >/dev/null
real 0m49.018s
user 0m47.987s
sys 0m0.888s
I certainly didn't expect it to be _faster_. More efficient use of the
delta cache, maybe?
On Wed, Feb 11, 2009 at 6:56 AM, Jeff King [off-list ref] wrote:
On Wed, Feb 11, 2009 at 10:48:18AM +0000, Mike Ralphson wrote:
quoted
quoted
On Tue, 10 Feb 2009, newren@gmail.com wrote:
fast-export will only list as parents those commits which have already
been traversed (making it appear as if merges have been squashed if not
all parents have been traversed). To avoid this silent squashing of
merge commits, we request commits in topological order.
Any comparative timings? We don't need to rename this to 'git
reasonably-speedy-export'? 8-)
Hmm.
In git.git:
$ time git fast-export --all --signed-tags=strip >/dev/null
real 1m6.013s
user 1m3.840s
sys 0m2.140s
$ time git fast-export --all --signed-tags=strip --topo-order >/dev/null
real 0m49.018s
user 0m47.987s
sys 0m0.888s
I certainly didn't expect it to be _faster_. More efficient use of the
delta cache, maybe?
Yeah, I also saw a speed-up, though the difference was less pronounced
-- 19.7 seconds versus 19.5 (that was the average for 5 runs, after
first doing a run that I ignored to make sure I was comparing
hot-cache to hot-cache).
I'm a little surprised why my numbers were so much lower than yours,
though. I don't think of my hard drive and CPU as being all that
quick -- is this a difference in packing, by chance, with your
repository not having recently been repacked?
From: Jeff King <hidden> Date: 2016-06-15 22:46:09
On Wed, Feb 11, 2009 at 04:18:28PM +0100, Johannes Schindelin wrote:
quoted
$ time git fast-export --all --signed-tags=strip >/dev/null
real 1m6.013s
user 1m3.840s
sys 0m2.140s
Or a warm against a cold cache?
Nope. See how the CPU is more or less pegged in the numbers above? Cold
cache looks like this:
$ echo 3 >/proc/sys/vm/drop_caches
$ time git fast-export --all --signed-tags=strip >/dev/null
real 1m11.148s
user 1m3.952s
sys 0m0.760s
So only 7 extra seconds paging in. Hooray for packing. :)
-Peff
From: Jeff King <hidden> Date: 2016-06-15 22:46:09
On Wed, Feb 11, 2009 at 08:23:22AM -0700, Elijah Newren wrote:
I'm a little surprised why my numbers were so much lower than yours,
though. I don't think of my hard drive and CPU as being all that
quick -- is this a difference in packing, by chance, with your
repository not having recently been repacked?
I don't think the hard drive matters much at all; the CPU is pegged the
whole time. I'm not fully packed, but almost so. I suspect it is a
combination of:
1. I compile git with "-g" and no optimizations to make debugging
easier.
2. My system sucks. It is a 1.8GHz dual Athlon from around 2003.
fast-export should be pretty memory intensive, which I'm sure is
saturating my totally rocking 266MHz FSB.
Just for fun, I tried:
- fully repacking; no change
- compiling with -O2; shaved off about 2s. Not too surprising;
previous profiling has shown that git spends a lot of time in zlib,
and I am dynamically linking against an optimized version.
So I think it is mainly (2) above, assuming your machine sucks a lot
less than mine.
-Peff