Created on 2010-01-24.11:39:59 by pmezard, last changed 2010-02-14.11:33:44 by tonfa.
| msg11696 (view) |
Author: tonfa |
Date: 2010-02-14.11:33:44 |
|
So what's the status of this now?
|
| msg11550 (view) |
Author: tonfa |
Date: 2010-01-31.16:41:00 |
|
changeset: 10294:d1cd09bb4d18
branch: stable
parent: 10284:b08ffd27dfc8
user: Matt Mackall <mpm@selenic.com>
date: Thu Jan 28 22:45:46 2010 -0600
summary: copies: fix issue1994
In main, but it breaks lots of tests.
|
| msg11539 (view) |
Author: mpm |
Date: 2010-01-29.19:03:08 |
|
This is definitely specific to rebase and how it fiddles with ancestry. The
patch that fixes your rebase case breaks a bunch of tests in the test suite.
Also, in your test case, this should -not- appear:
local changed dd/a which remote deleted
use (c)hanged version or (d)elete? c
..because remote didn't delete the file, it renamed it. The new code detects
the rename(!), but detects it as being a divergent rename (both sides
renaming it from its original name) because it's not following the "virtual
history" that rebase tries to impose on the merge.
|
| msg11509 (view) |
Author: pmezard |
Date: 2010-01-25.08:58:16 |
|
@mpm: it works with your patch. The test output is slightly modified into:
"""
ERROR: /Users/pmezard/dev/mercurial/hg/hg-pmezard/tests/test-rebase-copies
output changed
--- /Users/pmezard/dev/mercurial/hg/hg-pmezard/tests/test-rebase-copies.out
+++ /Users/pmezard/dev/mercurial/hg/hg-pmezard/tests/test-rebase-copies.err
@@ -4,6 +4,7 @@
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
created new head
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+merging dd/a
local changed dd/a which remote deleted
use (c)hanged version or (d)elete? c
adding branch
!
Failed test-rebase-copies: output changed
# Ran 1 tests, 0 skipped, 1 failed.
"""
but that's probably better anyway.
|
| msg11507 (view) |
Author: mpm |
Date: 2010-01-25.07:15:24 |
|
Try this:
diff -r 08a0f04b56bd mercurial/copies.py
--- a/mercurial/copies.py Mon Jan 25 00:05:27 2010 -0600
+++ b/mercurial/copies.py Mon Jan 25 01:14:41 2010 -0600
@@ -154,7 +154,7 @@
break # no merge needed, quit early
c2 = ctx(of, m2[of])
cr = related(oc, c2, ca.rev())
- if of == f or of == c2.path(): # non-divergent
+ if cr and (cr.path() == f or cr.path == c2.path()): # non-divergent
copy[f] = of
of = None
break
|
| msg11504 (view) |
Author: mpm |
Date: 2010-01-25.06:11:12 |
|
tonfa: Yes, it takes an hg st for one user from 10min to 3sec, while your
optimization didn't help.
|
| msg11502 (view) |
Author: tonfa |
Date: 2010-01-24.12:10:03 |
|
By the way, is the improvement from eb243551cbd8 justified on default (I
pushed a speed up, just not on stable):
changeset: 9991:a7d11deb47dd
user: Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date: Thu Dec 03 01:01:49 2009 +0100
summary: revlog: add fast path to ancestor
|
| msg11501 (view) |
Author: pmezard |
Date: 2010-01-24.11:39:59 |
|
To reproduce, run the attached test script before and after:
changeset: 10262:eb243551cbd8
branch: stable
user: Matt Mackall <mpm@selenic.com>
date: Tue Jan 19 22:20:05 2010 -0600
files: mercurial/context.py mercurial/copies.py
description:
copies: speed up copy detection
On some large repos, copy detection could spend > 10min using
fctx.ancestor() to determine if file revisions were actually related.
Because ancestor must traverse history to the root to determine the
GCA, it was doing a lot more work than necessary. With this
replacement, same status -r a:b takes ~3 seconds.
|
|
| Date |
User |
Action |
Args |
| 2010-02-14 11:33:44 | tonfa | set | nosy:
mpm, tonfa, pmezard, mg, djc, abuehl, astratto messages:
+ msg11696 |
| 2010-01-31 16:41:00 | tonfa | set | nosy:
mpm, tonfa, pmezard, mg, djc, abuehl, astratto messages:
+ msg11550 |
| 2010-01-29 19:03:08 | mpm | set | nosy:
+ astratto messages:
+ msg11539 |
| 2010-01-26 23:40:36 | mpm | set | nosy:
mpm, tonfa, pmezard, mg, djc, abuehl title: eb243551cbd8 broke merge copy handling -> eb243551cbd8 broke rebase copy handling |
| 2010-01-25 08:58:16 | pmezard | set | nosy:
mpm, tonfa, pmezard, mg, djc, abuehl messages:
+ msg11509 |
| 2010-01-25 07:15:24 | mpm | set | nosy:
mpm, tonfa, pmezard, mg, djc, abuehl messages:
+ msg11507 |
| 2010-01-25 06:11:12 | mpm | set | nosy:
mpm, tonfa, pmezard, mg, djc, abuehl messages:
+ msg11504 |
| 2010-01-24 12:13:04 | abuehl | set | nosy:
+ abuehl |
| 2010-01-24 12:11:29 | mg | set | nosy:
+ mg |
| 2010-01-24 12:10:03 | tonfa | set | status: unread -> chatting nosy:
+ tonfa messages:
+ msg11502 |
| 2010-01-24 11:46:29 | djc | set | nosy:
+ djc |
| 2010-01-24 11:39:59 | pmezard | create | |
|