diff tests/test-convert-filemap @ 5379:d3e51dc804f8

mercurial_source: add --filemap support
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Thu, 04 Oct 2007 23:21:37 -0300
parents
children
line wrap: on
line diff
new file mode 100755
--- /dev/null
+++ b/tests/test-convert-filemap
@@ -0,0 +1,124 @@
+#!/bin/sh
+
+HGMERGE=true; export HGMERGE
+
+echo '[extensions]' >> $HGRCPATH
+echo 'hgext.graphlog =' >> $HGRCPATH
+echo 'hgext.convert =' >> $HGRCPATH
+
+glog()
+{
+    hg glog --template '#rev# "#desc#" files: #files#\n' "$@"
+}
+
+hg init source
+cd source
+
+echo foo > foo
+echo baz > baz
+mkdir dir
+echo dir/file >> dir/file
+echo dir/file2 >> dir/file2
+hg ci -d '0 0' -qAm '0: add foo baz dir/'
+
+echo bar > bar
+echo quux > quux
+hg copy foo copied
+hg ci -d '1 0' -qAm '1: add bar quux; copy foo to copied'
+
+echo >> foo
+hg ci -d '2 0' -m '2: change foo'
+
+hg up -qC 1
+echo >> bar
+echo >> quux
+hg ci -d '3 0' -m '3: change bar quux'
+
+hg up -qC 2
+hg merge -qr 3
+echo >> bar
+echo >> baz
+hg ci -d '4 0' -m '4: first merge; change bar baz'
+
+echo >> bar
+echo 1 >> baz
+echo >> quux
+hg ci -d '5 0' -m '5: change bar baz quux'
+
+hg up -qC 4
+echo >> foo
+echo 2 >> baz
+hg ci -d '6 0' -m '6: change foo baz'
+
+hg up -qC 5
+hg merge -qr 6
+echo >> bar
+hg ci -d '7 0' -m '7: second merge; change bar'
+
+echo >> foo
+hg ci -m '8: change foo'
+
+glog
+
+echo '% final file versions in this repo:'
+hg manifest --debug
+hg debugrename copied
+echo
+
+cd ..
+
+splitrepo()
+{
+    msg="$1"
+    files="$2"
+    opts=$3
+    echo "% $files: $msg"
+    prefix=`echo "$files" | sed -e 's/ /-/g'`
+    fmap="$prefix.fmap"
+    repo="$prefix.repo"
+    for i in $files; do
+	echo "include $i" >> "$fmap"
+    done
+    hg -q convert $opts --filemap "$fmap" --datesort source "$repo"
+    glog -R "$repo"
+    hg -R "$repo" manifest --debug
+}
+
+splitrepo 'skip unwanted merges; use 1st parent in 1st merge, 2nd in 2nd' foo
+
+splitrepo 'merges are not merges anymore' bar
+
+splitrepo '1st merge is not a merge anymore; 2nd still is' baz
+
+splitrepo 'we add additional merges when they are interesting' 'foo quux'
+
+splitrepo 'partial conversion' 'bar quux' '-r 3'
+splitrepo 'complete the partial conversion' 'bar quux'
+
+rm -r foo.repo
+splitrepo 'partial conversion' 'foo' '-r 3'
+splitrepo 'complete the partial conversion' 'foo'
+
+splitrepo 'copied file; source not included in new repo' copied
+hg --cwd copied.repo debugrename copied
+
+splitrepo 'copied file; source included in new repo' 'foo copied'
+hg --cwd foo-copied.repo debugrename copied
+
+cat > renames.fmap <<EOF
+include dir
+exclude dir/file2
+rename dir dir2
+include foo
+include copied
+rename foo foo2
+rename copied copied2
+EOF
+hg -q convert --filemap renames.fmap --datesort source renames.repo
+glog -R renames.repo
+hg -R renames.repo manifest --debug
+hg --cwd renames.repo debugrename copied2
+echo 'copied:'
+hg --cwd source cat copied
+echo 'copied2:'
+hg --cwd renames.repo cat copied2