[Bug 3511] New: hg merge aborts with bogus 'path contains illegal component: /foo'

bugzilla-daemon at bz.selenic.com bugzilla-daemon at bz.selenic.com
Fri Jun 22 15:56:44 CDT 2012


http://bz.selenic.com/show_bug.cgi?id=3511

          Priority: normal
            Bug ID: 3511
                CC: mercurial-devel at selenic.com
          Assignee: bugzilla at selenic.com
           Summary: hg merge aborts with bogus 'path contains illegal
                    component: /foo'
          Severity: bug
    Classification: Unclassified
                OS: Other
          Reporter: jonathan.adams at oracle.com
          Hardware: PC
            Status: UNCONFIRMED
           Version: 2.2.1
         Component: Mercurial
           Product: Mercurial

After upgrading from 1.8.4 to 2.2.1, I started seeing:

% hg merge
 local changed usr/src/uts/sun4/os/memnode.c which remote deleted
use (c)hanged version or (d)elete? c
abort: path contains illegal component: /foo.c
% echo $?
255

where "foo.c" was a file that had been added in one of the two heads.  The
merge is quite complicated, because it has both the entire history of
a multi-year project, as well as the re-based "final push" version on one side,
and then a month or two of continued development on the other.

1.8.4 was able to do the merge with no complaints.

I was able to write a 'hg bisect' script, which:

        blows away the "prefix" dir
        builds and installs hg into 'prefix',
        runs the merge using the built hg on my workspace, records $?,
        does a 'make clean', and
        exiting 1 IFF the merge exited w/ 255

Bisecting from 2.0 (good) to the tip (bad) led to:

--- cut here ---
% hg bisect -b tip
% hg update 2.0
455 files updated, 0 files merged, 29 files removed, 0 files unresolved
% ./run_test.sh; echo $?
0
% hg bisect -g
Testing changeset 16030:308406677e9d (1262 changesets remaining, ~10 tests)
358 files updated, 0 files merged, 2 files removed, 0 files unresolved
% hg bisect -c ./run_test.sh
Changeset 16030:308406677e9d: good
Changeset 16364:48692b416fbc: bad
Changeset 16187:b9bd95e61b49: good
Changeset 16290:6863caf01daa: bad
Changeset 16251:6f236c8bdc01: good
Changeset 16270:e04cc21b01b2: good
Changeset 16280:db75321c7a0e: good
Changeset 16285:828fe2ca7cbb: bad
Changeset 16282:0a73c4bd9f47: good
Changeset 16283:0bb0b9f22cd7: good
Changeset 16284:b8c1a8a57540: good
The first bad revision is:
changeset:   16285:828fe2ca7cbb
user:        Matt Mackall <mpm at selenic.com>
date:        Sun Feb 26 16:45:59 2012 -0600
summary:     copies: use ctx.dirs() for directory rename detection

%
--- cut here ---

Given that, I tried doing:

--- cut here ---
% hg update -C tip
251 files updated, 0 files merged, 3 files removed, 0 files unresolved
% hg backout -r 16285
reverting mercurial/copies.py
251 files updated, 0 files merged, 3 files removed, 0 files unresolved
% ./run_test.sh; echo $?
0
%
--- cut here ---

so backing out that changeset allowed the merge to proceed without aborting.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list