Mercurial > hgsubversion
diff tests/fixtures/renamedproject.sh @ 313:942f198b8ff5
hg_delta_editor: detect new branches issued from non-branch directories
This fix solves the following case: let's /dumb/layout/project be an existing
project. To normalize the trunk/branches/tags layout, people may do:
$ mkdir /project
$ mv /dumb/layout/project /project/project
# Oups, should have been trunk!
$ mv /project/project /project/trunk
trunk creation was ignore because:
- update_branch_map() sees it come from a non-branch copy source and ignores it
(case #3).
- since it is not in self.branches, add_directory() ignores the non-existing path.
Then trunk is left uninitialized.
To solve this, we allow update_branch_map() to detect branches copied from
non-canonical locations.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 03 May 2009 21:42:42 -0500 |
parents | |
children |
line wrap: on
line diff
new file mode 100755 --- /dev/null +++ b/tests/fixtures/renamedproject.sh @@ -0,0 +1,59 @@ +#!/bin/sh +# +# Convert a project moving from a non-canonical to canonical +# layout, exercizing the missing plaintext code paths. It also tests +# branch creations where the branch source is not a canonical branch. +# + +mkdir temp +cd temp + +svnadmin create testrepo +svnurl=file://`pwd`/testrepo + +mkdir project-orig +cd project-orig +echo a > a +echo b > b +echo c > c +mkdir d +echo a > d/a +cd .. + +# Let's suppose it was actually branched in a previous life +mkdir project-branch +cd project-branch +echo a > a +echo b > b +cd .. + +svn import project-orig $svnurl/project-orig -m "init project" +svn import project-branch $svnurl/project-branch -m "init branch" + +svn mkdir $svnurl/project -m "create new project hierarchy" +svn mv $svnurl/project-orig $svnurl/project/project -m "rename as project" +svn mv $svnurl/project/project $svnurl/project/trunk -m "rename as project" + +svn mkdir $svnurl/project/branches -m "add branches root" +svn mv $svnurl/project-branch $svnurl/project/misplaced -m "incorrect move of the branch" +svn mv $svnurl/project/misplaced $svnurl/project/branches/branch -m "move of the branch" + +svn co $svnurl/project +cd project +echo a >> trunk/a +svn ci -m "change a" +echo a >> trunk/a +echo b >> trunk/b +svn rm trunk/c +echo a >> trunk/d/a +svn ci -m "change files in trunk" +# Try the same thing with the branch +echo a >> branches/branch/a +svn rm branches/branch/b +svn ci -m "change a in branch" +cd .. + +# Add this to make test_rebuildmeta happy, needs something to convert +svn import project-orig $svnurl/trunk -m "init fake trunk for rebuild_meta" + +svnadmin dump testrepo > ../renamedproject.svndump