view tests/test-mq-header-from @ 11775:a8614c5a5e9a

subrepos: support remapping of .hgsub source paths Given a .hgsub file containing lib/libfoo = http://server/libfoo the 'lib/libfoo' subrepo will be cloned from 'http://server/libfoo'. This changeset introduces a remapping mechanism whereby the source paths (the right-hand sides) in the .hgsub file can be remapped. This subpaths section [subpaths] http://server = /local will result in the 'lib/libfoo' subrepo being cloned from '/local/libfoo' instead of from 'http://server/libfoo'. The patterns (left-hand sides) are really regular expressions and the replacement strings (right-hand sides) can refer to matched groups using normal backreferences. This can be used for more complicated replacements such as [subpaths] http://server/(.*)-hg/ = http://hg.server/\1/ which replaces 'http://server/foo-hg/' with 'http://hg.server/foo/'. All patterns are applied in the order by which they are listed in the config files.
author Martin Geisler <mg@lazybytes.net>
date Thu, 15 Jul 2010 18:10:05 +0200
parents e433002acb05
children
line wrap: on
line source

#!/bin/sh

echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
echo "[diff]" >> $HGRCPATH
echo "nodates=true" >> $HGRCPATH


catlog() {
    cat .hg/patches/$1.patch | sed -e "s/^diff \-r [0-9a-f]* /diff -r ... /" \
                                   -e "s/^\(# Parent \).*/\1/"
    hg log --template "{rev}: {desc} - {author}\n"
}

runtest() {
    echo ==== init
    hg init a
    cd a
    hg qinit


    echo ==== qnew -U
    hg qnew -U 1.patch
    catlog 1

    echo ==== qref
    echo "1" >1
    hg add
    hg qref
    catlog 1

    echo ==== qref -u
    hg qref -u mary
    catlog 1

    echo ==== qnew
    hg qnew 2.patch
    echo "2" >2
    hg add
    hg qref
    catlog 2

    echo ==== qref -u
    hg qref -u jane
    catlog 2


    echo ==== qnew -U -m
    hg qnew -U -m "Three" 3.patch
    catlog 3

    echo ==== qref
    echo "3" >3
    hg add
    hg qref
    catlog 3

    echo ==== qref -m
    hg qref -m "Drei"
    catlog 3

    echo ==== qref -u
    hg qref -u mary
    catlog 3

    echo ==== qref -u -m
    hg qref -u maria -m "Three (again)"
    catlog 3

    echo ==== qnew -m
    hg qnew -m "Four" 4.patch
    echo "4" >4of t
    hg add
    hg qref
    catlog 4

    echo ==== qref -u
    hg qref -u jane
    catlog 4


    echo ==== qnew with HG header
    hg qnew --config 'mq.plain=true' 5.patch
    hg qpop
    echo "# HG changeset patch" >>.hg/patches/5.patch
    echo "# User johndoe" >>.hg/patches/5.patch
    hg qpush 2>&1 | grep 'now at'
    catlog 5

    echo ==== hg qref
    echo "5" >5
    hg add
    hg qref
    catlog 5

    echo ==== hg qref -U
    hg qref -U
    catlog 5

    echo ==== hg qref -u
    hg qref -u johndeere
    catlog 5


    echo ==== qnew with plain header
    hg qnew --config 'mq.plain=true' -U 6.patch
    hg qpop
    hg qpush 2>&1 | grep 'now at'
    catlog 6

    echo ==== hg qref
    echo "6" >6
    hg add
    hg qref
    catlog 6

    echo ==== hg qref -U
    hg qref -U
    catlog 6

    echo ==== hg qref -u
    hg qref -u johndeere
    catlog 6


    echo ==== "qpop -a / qpush -a"
    hg qpop -a
    hg qpush -a
    hg log --template "{rev}: {desc} - {author}\n"
}


echo ======= plain headers

echo "[mq]" >> $HGRCPATH
echo "plain=true" >> $HGRCPATH

mkdir sandbox
(cd sandbox ; runtest)
rm -r sandbox


echo ======= hg headers

echo "plain=false" >> $HGRCPATH

mkdir sandbox
(cd sandbox ; runtest)
rm -r sandbox

runtest