[Bug 6667] New: hg convert from svn creating broken changeset which replaces directory by a symlink

mercurial-bugs at mercurial-scm.org mercurial-bugs at mercurial-scm.org
Fri Mar 11 08:14:14 UTC 2022


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

            Bug ID: 6667
           Summary: hg convert from svn creating broken changeset which
                    replaces directory by a symlink
           Product: Mercurial
           Version: 6.1
          Hardware: PC
                OS: Linux
            Status: UNCONFIRMED
          Severity: bug
          Priority: wish
         Component: convert
          Assignee: bugzilla at mercurial-scm.org
          Reporter: pushbx at ulukai.org
                CC: durin42 at gmail.com, mercurial-devel at mercurial-scm.org
    Python Version: ---

During my attempts to mirror an svn repo into a hg repo using hg convert, I
came across a problematic changeset. It appears to delete a file in a
directory, and (within the same changeset) replace that directory by a symlink.
The default changeset as created by hg convert is broken; attempting to update
through it always fails. As shown below, hg up fails with "abort: path '...'
traverses symbolic link '...'".

I was able to recreate the problematic changeset manually (shown below after
the test case), and also to export the recreated changeset. However, hg import
of that exported changeset fails. I assume this is a different bug, so I
reported it in https://bz.mercurial-scm.org/show_bug.cgi?id=6666


Test case:

(Note: Some files in the SvarDOS repo may be allowed only for "personal
noncommercial use", but they are all allowed to be redistributed.)

test$ svnadmin create svn-mirror
test$ echo '#!/bin/sh' > svn-mirror/hooks/pre-revprop-change
test$ chmod +x svn-mirror/hooks/pre-revprop-change
test$ svnsync init "file://$PWD/svn-mirror" svn://svn.svardos.org/svardos
Copied properties for revision 0 (svn:sync-* properties skipped).
test$ svnsync sync "file://$PWD/svn-mirror" > /dev/null
test$ hg convert --config hooks.pretxncommit.checkcommitmessage=true svn-mirror
converted.hg --rev 670 --config convert.svn.startrev=660
initializing destination converted.hg repository
scanning source...
sorting...
converting...
10 clarify system for pkgnet command
9 provide German translation for pkg.ama                                        
8 unicode.map is not stored in svn, and title version autogenerated             
7 help no longer copied to web root, use a link file instead and point phpamb
to
 a dir
6 multi-lang help selector                                                      
5 change encoding from ANSI to UTF-8                                            
4 changed wording                                                               
3 added FreeDOS 1.3 and fixed typo                                              
2 translated help-de/freedos.ama to German                                      
1 help screen suggests *.svp for extension of package files + version bump to
20
220214 + source code package generated via makefile
0 ver 20220214 frozen to tags                                                   
test$ hg -R converted.hg/ up
abort: path 'website/help/help-en.amb' traverses symbolic link 'website/help'
test$


Script showing how to manually recreate the problematic changeset: (in this
case the hg repo was created without a convert.svn.startrev config option;
fdbfba91f is the problematic changeset)

hg up -r "parents(fdbfba91f)"
hg cat -r fdbfba91f website/index.php > website/index.php
hg rm website/help/help-en.amb
hg rm website/help
ln -s ../help website/help
hg add website/help
hg ci -m "help no longer copied to web root, use a link file instead and point
p
hpamb to a dir" -d "Sat Feb 12 20:39:48 2022 +0000" -u "mateusz.viste" --config 
hooks.pretxncommit.checkcommitmessage=true

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


More information about the Mercurial-devel mailing list