[Bug 5657] New: converting repo with svn subrepo aborts

mercurial-bugs at mercurial-scm.org mercurial-bugs at mercurial-scm.org
Mon Aug 14 16:53:02 UTC 2017


https://bz.mercurial-scm.org/show_bug.cgi?id=5657

            Bug ID: 5657
           Summary: converting repo with svn subrepo aborts
           Product: Mercurial
           Version: 4.2.2
          Hardware: PC
                OS: Linux
            Status: UNCONFIRMED
          Severity: feature
          Priority: wish
         Component: convert
          Assignee: bugzilla at mercurial-scm.org
          Reporter: sveinse at seldal.com
                CC: durin42 at gmail.com, mercurial-devel at mercurial-scm.org

hg convert fails if the incoming hg repo contains a svn subrepo, *and* that it
has an arbitrary merge in its history.

The following script will provoke the error on hg 3.7.3 and 4.2.3:

hg init hg-error
cd hg-error
echo "nested = [svn]http://svn.apache.org/repos/asf/subversion/trunk/doc"
>.hgsub
hg add .hgsub
svn checkout http://svn.apache.org/repos/asf/subversion/trunk/doc nested
hg ci -m "Adding svn subrepo"
touch file1.txt
hg add file1.txt
hg ci -m "Adding file1"
hg up 0
touch file2.txt
hg add file2.txt
hg ci -m "Adding file2"
hg merge 1
hg ci -m "Merged"
cd ..
hg convert hg-error hg-error-copy --debug --traceback

Resulting in the following output:

initializing destination hg-error-copy repository
run hg source pre-conversion action
run hg sink pre-conversion action
scanning source...
sorting...
converting...
3 Adding svn subrepo
source: bfade17fe08899b639fae3cf5a42b3f4f24bfc56
committing files:
.hgsub
.hgsubstate
committing manifest
committing changelog
2 Adding file1
source: e4ef7e039eae085ea5f1c8424544ba5d4139b443
committing files:
file1.txt
committing manifest
committing changelog
1 Adding file2
source: c8fceef8bc8f7e224e4793d3b2ed96487e0db5d6
committing files:
file2.txt
committing manifest
committing changelog
0 Merged
source: 68c5279d17ec6200bb0c2e9a8016e6738ac09d44
resolving manifests
 branchmerge: True, force: True, partial: False
 ancestor: bfade17fe088, local: c8fceef8bc8f, remote: e4ef7e039eae
svn: warning: W155007: '/home/sveinse/hg-error-copy/nested' is not a working
copy
run hg sink post-conversion action
run hg source post-conversion action
Traceback (most recent call last):
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/scmutil.py", line 146, in
callcatch
    return func()
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/dispatch.py", line 285,
in _runcatchfunc
    return _dispatch(req)
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/dispatch.py", line 912,
in _dispatch
    cmdpats, cmdoptions)
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/dispatch.py", line 648,
in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/dispatch.py", line 920,
in _runcommand
    return cmdfunc()
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/dispatch.py", line 909,
in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/util.py", line 1080, in
check
    return func(*args, **kwargs)
  File "/home/sveinse/build/mercurial-4.2.3/hgext/convert/__init__.py", line
437, in convert
    return convcmd.convert(ui, src, dest, revmapfile, **opts)
  File "/home/sveinse/build/mercurial-4.2.3/hgext/convert/convcmd.py", line
611, in convert
    c.convert(sortmode)
  File "/home/sveinse/build/mercurial-4.2.3/hgext/convert/convcmd.py", line
522, in convert
    self.copy(c)
  File "/home/sveinse/build/mercurial-4.2.3/hgext/convert/convcmd.py", line
490, in copy
    source, self.map, full, cleanp2)
  File "/home/sveinse/build/mercurial-4.2.3/hgext/convert/hg.py", line 327, in
putcommit
    for file in self._calculatemergedfiles(source, p1ctx, p2ctx):
  File "/home/sveinse/build/mercurial-4.2.3/hgext/convert/hg.py", line 209, in
_calculatemergedfiles
    False, # followcopies
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/extensions.py", line 231,
in closure
    return func(*(args + a), **kw)
  File "/home/sveinse/build/mercurial-4.2.3/hgext/largefiles/overrides.py",
line 471, in overridecalculateupdates
    repo, p1, p2, pas, branchmerge, force, acceptremote, *args, **kwargs)
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/merge.py", line 962, in
calculateupdates
    acceptremote, followcopies)
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/merge.py", line 821, in
manifestmerge
    if any(wctx.sub(s).dirty() for s in wctx.substate):
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/merge.py", line 821, in
<genexpr>
    if any(wctx.sub(s).dirty() for s in wctx.substate):
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/subrepo.py", line 1206,
in dirty
    if self._state[1] in self._wcrevs() or ignoreupdate:
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/subrepo.py", line 1161,
in _wcrevs
    output, err = self._svncommand(['info', '--xml'])
  File "/home/sveinse/build/mercurial-4.2.3/mercurial/subrepo.py", line 1144,
in _svncommand
    % p.returncode)
Abort: svn: E155007: '/home/sveinse/hg-error-copy/nested' is not a working copy
abort: svn: E155007: '/home/sveinse/hg-error-copy/nested' is not a working copy

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


More information about the Mercurial-devel mailing list