#!/bin/sh # # Use this script to generate move.svndump # mkdir temp cd temp mkdir project-orig cd project-orig mkdir trunk echo a > trunk/a mkdir trunk/d1 mkdir trunk/d2 echo b > trunk/d1/b echo c > trunk/d1/c echo d > trunk/d2/d cd .. svnadmin create svn-repo global svnurl := "file://$[pwd]/svn-repo" svn import project-orig $svnurl -m "init projA" svn co $svnurl project cd project # Build a module renaming chain which used to confuse the converter. # Update svn repository echo a >> trunk/a echo c >> trunk/d1/c svn ci -m commitbeforemove svn mv $svnurl/trunk $svnurl/subproject -m movedtrunk svn up mkdir subproject/trunk svn add subproject/trunk svn ci -m createtrunk mkdir subproject/branches svn add subproject/branches svn ci -m createbranches svn mv $svnurl/subproject/d1 $svnurl/subproject/trunk/d1 -m moved1 svn mv $svnurl/subproject/d2 $svnurl/subproject/trunk/d2 -m moved2 svn up echo b >> subproject/trunk/d1/b svn rm subproject/trunk/d2 svn ci -m "changeb and rm d2" svn mv $svnurl/subproject/trunk/d1 $svnurl/subproject/branches/d1 -m moved1again if svn help copy | grep 'SRC\[@REV\]' > /dev/null !2 > !1 { # SVN >= 1.5 replaced the -r REV syntax with @REV # Copy a file from a past revision svn copy $svnurl/subproject/trunk/d2/d@7 $svnurl/subproject/trunk -m copyfilefrompast # Copy a directory from a past revision svn copy $svnurl/subproject/trunk/d2@7 $svnurl/subproject/trunk -m copydirfrompast } else { # Copy a file from a past revision svn copy -r 7 $svnurl/subproject/trunk/d2/d $svnurl/subproject/trunk -m copyfilefrompast # Copy a directory from a past revision svn copy -r 7 $svnurl/subproject/trunk/d2 $svnurl/subproject/trunk -m copydirfrompast } # Copy a directory while removing a subdirectory svn up mkdir -p subproject/trunk/d3/d31 echo e > subproject/trunk/d3/d31/e echo f > subproject/trunk/d3/f svn add subproject/trunk/d3 svn ci -m "add d3" svn copy subproject/trunk/d3 subproject/trunk/d4 svn rm subproject/trunk/d3/d31 svn ci -m "copy dir and remove subdir" # Test directory moves svn up mkdir -p subproject/trunk/d4old echo g > subproject/trunk/d4old/g svn add subproject/trunk/d4old svn ci -m "add d4old" svn mv subproject/trunk/d4old subproject/trunk/d4new svn ci -m "rename d4old into d4new" cd .. svnadmin dump svn-repo > ../move.svndump (CommandList children: [ (C {(mkdir)} {(temp)}) (C {(cd)} {(temp)}) (C {(mkdir)} {(project-orig)}) (C {(cd)} {(project-orig)}) (C {(mkdir)} {(trunk)}) (SimpleCommand words: [{(echo)} {(a)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(trunk/a)} spids:[38])] ) (C {(mkdir)} {(trunk/d1)}) (C {(mkdir)} {(trunk/d2)}) (SimpleCommand words: [{(echo)} {(b)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(trunk/d1/b)} spids:[54])] ) (SimpleCommand words: [{(echo)} {(c)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(trunk/d1/c)} spids:[62])] ) (SimpleCommand words: [{(echo)} {(d)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(trunk/d2/d)} spids:[70])] ) (C {(cd)} {(..)}) (C {(svnadmin)} {(create)} {(svn-repo)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:svnurl) op: Equal rhs: {(file) (Lit_Other ":") (//) (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: spids: [89 91] ) (/svn-repo) } spids: [85] ) ] spids: [85] ) (C {(svn)} {(import)} {(project-orig)} {($ VSub_Name "$svnurl")} {(-m)} {(DQ ("init projA"))}) (C {(svn)} {(co)} {($ VSub_Name "$svnurl")} {(project)}) (C {(cd)} {(project)}) (SimpleCommand words: [{(echo)} {(a)}] redirects: [(Redir op_id:Redir_DGreat fd:-1 arg_word:{(trunk/a)} spids:[131])] ) (SimpleCommand words: [{(echo)} {(c)}] redirects: [(Redir op_id:Redir_DGreat fd:-1 arg_word:{(trunk/d1/c)} spids:[139])] ) (C {(svn)} {(ci)} {(-m)} {(commitbeforemove)}) (C {(svn)} {(mv)} {($ VSub_Name "$svnurl") (/trunk)} {($ VSub_Name "$svnurl") (/subproject)} {(-m)} {(movedtrunk)} ) (C {(svn)} {(up)}) (C {(mkdir)} {(subproject/trunk)}) (C {(svn)} {(add)} {(subproject/trunk)}) (C {(svn)} {(ci)} {(-m)} {(createtrunk)}) (C {(mkdir)} {(subproject/branches)}) (C {(svn)} {(add)} {(subproject/branches)}) (C {(svn)} {(ci)} {(-m)} {(createbranches)}) (C {(svn)} {(mv)} {($ VSub_Name "$svnurl") (/subproject/d1)} {($ VSub_Name "$svnurl") (/subproject/trunk/d1)} {(-m)} {(moved1)} ) (C {(svn)} {(mv)} {($ VSub_Name "$svnurl") (/subproject/d2)} {($ VSub_Name "$svnurl") (/subproject/trunk/d2)} {(-m)} {(moved2)} ) (C {(svn)} {(up)}) (SimpleCommand words: [{(echo)} {(b)}] redirects: [(Redir op_id:Redir_DGreat fd:-1 arg_word:{(subproject/trunk/d1/b)} spids:[241])] ) (C {(svn)} {(rm)} {(subproject/trunk/d2)}) (C {(svn)} {(ci)} {(-m)} {(DQ ("changeb and rm d2"))}) (C {(svn)} {(mv)} {($ VSub_Name "$svnurl") (/subproject/trunk/d1)} {($ VSub_Name "$svnurl") (/subproject/branches/d1)} {(-m)} {(moved1again)} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(svn)} {(help)} {(copy)}) (SimpleCommand words: [{(grep)} {(SQ <"SRC\\[@REV\\]">)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [293] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [297] ) ] ) ] negated: False ) terminator: ) ] action: [ (C {(svn)} {(copy)} {($ VSub_Name "$svnurl") (/subproject/trunk/d2/d) (Lit_Other "@") (7)} {($ VSub_Name "$svnurl") (/subproject/trunk)} {(-m)} {(copyfilefrompast)} ) (C {(svn)} {(copy)} {($ VSub_Name "$svnurl") (/subproject/trunk/d2) (Lit_Other "@") (7)} {($ VSub_Name "$svnurl") (/subproject/trunk)} {(-m)} {(copydirfrompast)} ) ] spids: [-1 301] ) ] else_action: [ (C {(svn)} {(copy)} {(-r)} {(7)} {($ VSub_Name "$svnurl") (/subproject/trunk/d2/d)} {($ VSub_Name "$svnurl") (/subproject/trunk)} {(-m)} {(copyfilefrompast)} ) (C {(svn)} {(copy)} {(-r)} {(7)} {($ VSub_Name "$svnurl") (/subproject/trunk/d2)} {($ VSub_Name "$svnurl") (/subproject/trunk)} {(-m)} {(copydirfrompast)} ) ] spids: [349 397] ) (C {(svn)} {(up)}) (C {(mkdir)} {(-p)} {(subproject/trunk/d3/d31)}) (SimpleCommand words: [{(echo)} {(e)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(subproject/trunk/d3/d31/e)} spids:[417])] ) (SimpleCommand words: [{(echo)} {(f)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(subproject/trunk/d3/f)} spids:[425])] ) (C {(svn)} {(add)} {(subproject/trunk/d3)}) (C {(svn)} {(ci)} {(-m)} {(DQ ("add d3"))}) (C {(svn)} {(copy)} {(subproject/trunk/d3)} {(subproject/trunk/d4)}) (C {(svn)} {(rm)} {(subproject/trunk/d3/d31)}) (C {(svn)} {(ci)} {(-m)} {(DQ ("copy dir and remove subdir"))}) (C {(svn)} {(up)}) (C {(mkdir)} {(-p)} {(subproject/trunk/d4old)}) (SimpleCommand words: [{(echo)} {(g)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(subproject/trunk/d4old/g)} spids:[487])] ) (C {(svn)} {(add)} {(subproject/trunk/d4old)}) (C {(svn)} {(ci)} {(-m)} {(DQ ("add d4old"))}) (C {(svn)} {(mv)} {(subproject/trunk/d4old)} {(subproject/trunk/d4new)}) (C {(svn)} {(ci)} {(-m)} {(DQ ("rename d4old into d4new"))}) (C {(cd)} {(..)}) (SimpleCommand words: [{(svnadmin)} {(dump)} {(svn-repo)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(../move.svndump)} spids:[537])] ) ] )