view tests/test-convert-hg-svn.t @ 33064:9062458febca

keyword: restore kwtemplater.match at the end of wrapped webcommands Before this patch, kwweb_skip doesn't restore kwtemplater.match after wrapped webcommands. This suppresses keyword expansion at wrapped webcommands. Typical usecase of this issue is "file" webcommand after annotate, changeset, filediff or so on. To ensure kwtemplater.match=util.never while original webcommand running, this patch makes kwweb_skip yield values returned by it, because it returns generator object.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Mon, 26 Jun 2017 03:40:06 +0900
parents dfd5a6830ea7
children 5abc47d4ca6b
line wrap: on
line source

#require svn svn-bindings

  $ filter_svn_output () {
  >     egrep -v 'Committing|Updating|(^$)' | sed -e 's/done$//' || true
  > }

  $ cat <<EOF >> $HGRCPATH
  > [extensions]
  > convert =
  > mq =
  > EOF

  $ SVNREPOPATH=`pwd`/svn-repo
#if windows
  $ SVNREPOURL=file:///`$PYTHON -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$SVNREPOPATH"`
#else
  $ SVNREPOURL=file://`$PYTHON -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$SVNREPOPATH"`
#endif

  $ svnadmin create "$SVNREPOPATH"
  $ cat > "$SVNREPOPATH"/hooks/pre-revprop-change <<EOF
  > #!/bin/sh
  > 
  > REPOS="$1"
  > REV="$2"
  > USER="$3"
  > PROPNAME="$4"
  > ACTION="$5"
  > 
  > if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
  > if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-branch" ]; then exit 0; fi
  > if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-rev" ]; then exit 0; fi
  > 
  > echo "Changing prohibited revision property" >&2
  > exit 1
  > EOF
  $ chmod +x "$SVNREPOPATH"/hooks/pre-revprop-change
  $ svn co "$SVNREPOURL" "$SVNREPOPATH"-wc
  Checked out revision 0.
  $ cd "$SVNREPOPATH"-wc
  $ echo a > a
  $ svn add a
  A         a
  $ svn ci -m'added a' a | filter_svn_output
  Adding         a
  Transmitting file data .
  Committed revision 1.
  $ cd ..

initial roundtrip

  $ hg convert -s svn -d hg "$SVNREPOPATH"-wc "$SVNREPOPATH"-hg | grep -v initializing
  scanning source...
  sorting...
  converting...
  0 added a
  $ hg convert -s hg -d svn "$SVNREPOPATH"-hg "$SVNREPOPATH"-wc
  scanning source...
  sorting...
  converting...

second roundtrip should do nothing

  $ hg convert -s svn -d hg "$SVNREPOPATH"-wc "$SVNREPOPATH"-hg
  scanning source...
  sorting...
  converting...
  $ hg convert -s hg -d svn "$SVNREPOPATH"-hg "$SVNREPOPATH"-wc
  scanning source...
  sorting...
  converting...

new hg rev

  $ hg clone "$SVNREPOPATH"-hg "$SVNREPOPATH"-work
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ cd "$SVNREPOPATH"-work
  $ echo b > b
  $ hg add b
  $ hg ci -mb

adding an empty revision

  $ hg qnew -m emtpy empty
  $ hg qfinish -a
  $ cd ..

echo hg to svn

  $ hg --cwd "$SVNREPOPATH"-hg pull -q "$SVNREPOPATH"-work
  $ hg convert -s hg -d svn "$SVNREPOPATH"-hg "$SVNREPOPATH"-wc
  scanning source...
  sorting...
  converting...
  1 b
  0 emtpy

svn back to hg should do nothing

  $ hg convert -s svn -d hg "$SVNREPOPATH"-wc "$SVNREPOPATH"-hg
  scanning source...
  sorting...
  converting...

hg back to svn should do nothing

  $ hg convert -s hg -d svn "$SVNREPOPATH"-hg "$SVNREPOPATH"-wc
  scanning source...
  sorting...
  converting...

verify which shamap format we are storing and must be able to handle

  $ cat svn-repo-hg/.hg/shamap
  svn:????????-????-????-????-????????????@1 ???????????????????????????????????????? (glob)
  svn:????????-????-????-????-????????????@2 ???????????????????????????????????????? (glob)
  svn:????????-????-????-????-????????????@2 ???????????????????????????????????????? (glob)
  $ cat svn-repo-wc/.svn/hg-shamap
  ???????????????????????????????????????? 1 (glob)
  ???????????????????????????????????????? svn:????????-????-????-????-????????????@2 (glob)
  ???????????????????????????????????????? svn:????????-????-????-????-????????????@2 (glob)