tests/test-impexp-branch
author Edouard Gomez <ed.gomez@free.fr>
Sun, 04 Jan 2009 02:36:48 +0100
changeset 7583 77fec2d270ae
parent 4444 32ea809e5bd1
permissions -rwxr-xr-x
convert/gnuarch: parse continuation-of revisions in gnuarch source In GNU Arch, continuation-of was often used for: - tagging revisions - continue working on a project in a new archive, because arch was scaling poorly in revision numbers (cat-logs were slow to be parsed and scanned through) - very similar to the previous point, fork his own branch of a project. Parsing this header information will allow to 'follow' new history because it often hints at older/forked/personal revision trees. This patch however just implements the parsing of the continuation-of header. A followup patch will implement the proper use of this new information.

#!/bin/sh

cat >findbranch.py <<EOF
import re, sys

head_re = re.compile('^#(?:(?:\\s+([A-Za-z][A-Za-z0-9_]*)(?:\\s.*)?)|(?:\\s*))$')

for line in sys.stdin:
    hmatch = head_re.match(line)
    if not hmatch:
        sys.exit(1)
    if hmatch.group(1) == 'Branch':
        sys.exit(0)
sys.exit(1)
EOF
hg init a
cd a
echo "Rev 1" >rev
hg add rev
hg commit -m "No branch."
hg branch abranch
echo "Rev  2" >rev
hg commit -m "With branch."
if hg export 0 | python ../findbranch.py; then
    echo "Export of default branch revision has Branch header" 1>&2
    exit 1
fi
if hg export 1 | python ../findbranch.py; then
    :  # Do nothing
else
    echo "Export of branch revision is missing Branch header" 1>&2
    exit 1
fi
# Make sure import still works with branch information in patches.
cd ..
hg init b
cd b
hg -R ../a export 0 | hg import -
hg -R ../a export 1 | hg import -
cd ..
rm -rf b
hg init b
cd b
hg -R ../a export 0 | hg import --exact -
hg -R ../a export 1 | hg import --exact -