Mercurial > hg
view tests/test-convert-mtn @ 11715:4f9dfb54c8b5 stable
qpush --move: move the right patch even with comment lines
88fc876a4833 caused that we find the index of the moving patch in self.series
but look it up in self.full_series. The difference between these is that
full_series also contains comment lines, and we thus moved the wrong patch.
Use back self.full_series to find the moving patch, but take care of striping
the patch guard markers before comparing the patch name. Test cases have been
added for comments and empty lines in self.full_series, and for the case of
guarded patches.
Original patch contributed by Mads Kiilerich <mads@kiilerich.com>
author | Gilles Moris <gilles.moris@free.fr> |
---|---|
date | Sat, 10 Jul 2010 21:23:00 +0200 |
parents | bb5ea66789e3 |
children |
line wrap: on
line source
#!/bin/sh "$TESTDIR/hghave" mtn || exit 80 # Monotone directory is called .monotone on *nix and monotone # on Windows. Having a variable here ease test patching. mtndir=.monotone echo "[extensions]" >> $HGRCPATH echo "convert=" >> $HGRCPATH echo 'graphlog =' >> $HGRCPATH HOME=`pwd`/do_not_use_HOME_mtn; export HOME # Windows version of monotone home APPDATA=$HOME; export APPDATA echo % tedious monotone keys configuration # The /dev/null redirection is necessary under Windows, or # it complains about home directory permissions mtn --quiet genkey test@selenic.com 1>/dev/null 2>&1 <<EOF passphrase passphrase EOF cat >> $HOME/$mtndir/monotonerc <<EOF function get_passphrase(keypair_id) return "passphrase" end EOF echo % create monotone repository mtn db init --db=repo.mtn mtn --db=repo.mtn --branch=com.selenic.test setup workingdir cd workingdir echo a > a mkdir dir echo b > dir/b echo d > dir/d python -c 'file("bin", "wb").write("a\\x00b")' echo c > c mtn add a dir/b dir/d c bin mtn ci -m initialize echo % update monotone working directory mtn mv a dir/a echo a >> dir/a echo b >> dir/b mtn drop c python -c 'file("bin", "wb").write("b\\x00c")' mtn ci -m update1 cd .. echo % convert once hg convert -s mtn repo.mtn cd workingdir echo e > e mtn add e mtn drop dir/b mtn mv bin bin2 mtn ci -m 'update2 "with" quotes' echo '% test directory move' mkdir -p dir1/subdir1 mkdir -p dir1/subdir2_other echo file1 > dir1/subdir1/file1 echo file2 > dir1/subdir2_other/file1 mtn add dir1/subdir1/file1 dir1/subdir2_other/file1 mtn ci -m createdir1 mtn rename dir1/subdir1 dir1/subdir2 mtn ci -m movedir1 echo '% test subdirectory move' mtn mv dir dir2 echo newfile > dir2/newfile mtn drop dir2/d mtn add dir2/newfile mtn ci -m movedir # Test directory removal with empty directory mkdir dir2/dir mkdir dir2/dir/subdir echo f > dir2/dir/subdir/f mkdir dir2/dir/emptydir mtn add --quiet -R dir2/dir mtn ci -m emptydir mtn drop -R dir2/dir mtn ci -m dropdirectory echo '% test directory and file move' mkdir -p dir3/d1 echo a > dir3/a mtn add dir3/a dir3/d1 mtn ci -m dirfilemove mtn mv dir3/a dir3/d1/a mtn mv dir3/d1 dir3/d2 mtn ci -m dirfilemove2 echo '% test directory move into another directory move' mkdir dir4 mkdir dir5 echo a > dir4/a mtn add dir4/a dir5 mtn ci -m dirdirmove mtn mv dir5 dir6 mtn mv dir4 dir6/dir4 mtn ci -m dirdirmove2 echo '% test diverging directory moves' mkdir -p dir7/dir9/dir8 echo a > dir7/dir9/dir8/a echo b > dir7/dir9/b echo c > dir7/c mtn add -R dir7 mtn ci -m divergentdirmove mtn mv dir7 dir7-2 mtn mv dir7-2/dir9 dir9-2 mtn mv dir9-2/dir8 dir8-2 mtn ci -m divergentdirmove2 cd .. echo % convert incrementally hg convert -s mtn repo.mtn glog() { hg glog --template '{rev} "{desc|firstline}" files: {files}\n' "$@" } cd repo.mtn-hg hg up -C glog echo % manifest hg manifest echo % contents cat dir2/a test -d dir2/dir && echo 'removed dir2/dir is still there!' echo % file move hg log -v -C -r 1 | grep copies echo % check directory move hg manifest -r 4 test -d dir1/subdir2 || echo 'new dir1/subdir2 does not exist!' test -d dir1/subdir1 && echo 'renamed dir1/subdir1 is still there!' hg log -v -C -r 4 | grep copies echo % check file remove with directory move hg manifest -r 5 echo % check file move with directory move hg manifest -r 9 echo % check file directory directory move hg manifest -r 11 echo % check divergent directory moves hg manifest -r 13 exit 0