tests/test-convert-filemap
changeset 5379 d3e51dc804f8
equal deleted inserted replaced
5378:8a2915f57dfc 5379:d3e51dc804f8
       
     1 #!/bin/sh
       
     2 
       
     3 HGMERGE=true; export HGMERGE
       
     4 
       
     5 echo '[extensions]' >> $HGRCPATH
       
     6 echo 'hgext.graphlog =' >> $HGRCPATH
       
     7 echo 'hgext.convert =' >> $HGRCPATH
       
     8 
       
     9 glog()
       
    10 {
       
    11     hg glog --template '#rev# "#desc#" files: #files#\n' "$@"
       
    12 }
       
    13 
       
    14 hg init source
       
    15 cd source
       
    16 
       
    17 echo foo > foo
       
    18 echo baz > baz
       
    19 mkdir dir
       
    20 echo dir/file >> dir/file
       
    21 echo dir/file2 >> dir/file2
       
    22 hg ci -d '0 0' -qAm '0: add foo baz dir/'
       
    23 
       
    24 echo bar > bar
       
    25 echo quux > quux
       
    26 hg copy foo copied
       
    27 hg ci -d '1 0' -qAm '1: add bar quux; copy foo to copied'
       
    28 
       
    29 echo >> foo
       
    30 hg ci -d '2 0' -m '2: change foo'
       
    31 
       
    32 hg up -qC 1
       
    33 echo >> bar
       
    34 echo >> quux
       
    35 hg ci -d '3 0' -m '3: change bar quux'
       
    36 
       
    37 hg up -qC 2
       
    38 hg merge -qr 3
       
    39 echo >> bar
       
    40 echo >> baz
       
    41 hg ci -d '4 0' -m '4: first merge; change bar baz'
       
    42 
       
    43 echo >> bar
       
    44 echo 1 >> baz
       
    45 echo >> quux
       
    46 hg ci -d '5 0' -m '5: change bar baz quux'
       
    47 
       
    48 hg up -qC 4
       
    49 echo >> foo
       
    50 echo 2 >> baz
       
    51 hg ci -d '6 0' -m '6: change foo baz'
       
    52 
       
    53 hg up -qC 5
       
    54 hg merge -qr 6
       
    55 echo >> bar
       
    56 hg ci -d '7 0' -m '7: second merge; change bar'
       
    57 
       
    58 echo >> foo
       
    59 hg ci -m '8: change foo'
       
    60 
       
    61 glog
       
    62 
       
    63 echo '% final file versions in this repo:'
       
    64 hg manifest --debug
       
    65 hg debugrename copied
       
    66 echo
       
    67 
       
    68 cd ..
       
    69 
       
    70 splitrepo()
       
    71 {
       
    72     msg="$1"
       
    73     files="$2"
       
    74     opts=$3
       
    75     echo "% $files: $msg"
       
    76     prefix=`echo "$files" | sed -e 's/ /-/g'`
       
    77     fmap="$prefix.fmap"
       
    78     repo="$prefix.repo"
       
    79     for i in $files; do
       
    80 	echo "include $i" >> "$fmap"
       
    81     done
       
    82     hg -q convert $opts --filemap "$fmap" --datesort source "$repo"
       
    83     glog -R "$repo"
       
    84     hg -R "$repo" manifest --debug
       
    85 }
       
    86 
       
    87 splitrepo 'skip unwanted merges; use 1st parent in 1st merge, 2nd in 2nd' foo
       
    88 
       
    89 splitrepo 'merges are not merges anymore' bar
       
    90 
       
    91 splitrepo '1st merge is not a merge anymore; 2nd still is' baz
       
    92 
       
    93 splitrepo 'we add additional merges when they are interesting' 'foo quux'
       
    94 
       
    95 splitrepo 'partial conversion' 'bar quux' '-r 3'
       
    96 splitrepo 'complete the partial conversion' 'bar quux'
       
    97 
       
    98 rm -r foo.repo
       
    99 splitrepo 'partial conversion' 'foo' '-r 3'
       
   100 splitrepo 'complete the partial conversion' 'foo'
       
   101 
       
   102 splitrepo 'copied file; source not included in new repo' copied
       
   103 hg --cwd copied.repo debugrename copied
       
   104 
       
   105 splitrepo 'copied file; source included in new repo' 'foo copied'
       
   106 hg --cwd foo-copied.repo debugrename copied
       
   107 
       
   108 cat > renames.fmap <<EOF
       
   109 include dir
       
   110 exclude dir/file2
       
   111 rename dir dir2
       
   112 include foo
       
   113 include copied
       
   114 rename foo foo2
       
   115 rename copied copied2
       
   116 EOF
       
   117 hg -q convert --filemap renames.fmap --datesort source renames.repo
       
   118 glog -R renames.repo
       
   119 hg -R renames.repo manifest --debug
       
   120 hg --cwd renames.repo debugrename copied2
       
   121 echo 'copied:'
       
   122 hg --cwd source cat copied
       
   123 echo 'copied2:'
       
   124 hg --cwd renames.repo cat copied2