tests/test-subrepo-deep-nested-change
author Renato Cunha <renatoc@gmail.com>
Sat, 07 Aug 2010 16:38:38 -0300
changeset 11878 8bb1481cf08f
parent 11110 22f5ad0b5857
permissions -rwxr-xr-x
py3kcompat: added fake ord implementation for py3k In py3k, a bytes object __getitem__ will return an int instead of a one-character bytes object. This has negative consequences when we want to ord(), like in the following example: >>> b'foo'[0] 102 >>> ord(b'foo'[0]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: ord() expected string of length 1, but int found This patch overrides the default ord() implementation to just return an int that's what is passed as an argument for ord(). Making the above call succeed: >>> ord(b'foo'[0]) 102

#!/bin/sh

echo % Preparing the subrepository 'sub2'
hg init sub2
echo sub2 > sub2/sub2
hg add -R sub2
hg commit -R sub2 -m "sub2 import"

echo % Preparing the 'sub1' repo which depends on the subrepo 'sub2'
hg init sub1
echo sub1 > sub1/sub1
echo "sub2 = ../sub2" > sub1/.hgsub
hg clone sub2 sub1/sub2 | sed 's/ .*sub/ ...sub/g'
hg add -R sub1
hg commit -R sub1 -m "sub1 import"

echo % Preparing the 'main' repo which depends on the subrepo 'sub1'
hg init main
echo main > main/main
echo "sub1 = ../sub1" > main/.hgsub
hg clone sub1 main/sub1  | sed 's/ .*sub/ ...sub/g'
hg add -R main
hg commit -R main -m "main import"

echo % Cleaning both repositories, just as a clone -U
hg up -C -R sub2 null
hg up -C -R sub1 null
hg up -C -R main null
rm -rf main/sub1
rm -rf sub1/sub2

echo % Clone main
hg clone main cloned | sed 's/ .*sub/ ...sub/g' 

echo % Checking cloned repo ids
printf "cloned " ; hg id -R cloned
printf "cloned/sub1 " ; hg id -R cloned/sub1
printf "cloned/sub1/sub2 " ; hg id -R cloned/sub1/sub2

echo % debugsub output for main and sub1
hg debugsub -R cloned
hg debugsub -R cloned/sub1

echo % Modifying deeply nested 'sub2'
echo modified > cloned/sub1/sub2/sub2
hg commit -m "deep nested modif should trigger a commit" -R cloned

echo % Checking modified node ids
printf "cloned " ; hg id -R cloned
printf "cloned/sub1 " ; hg id -R cloned/sub1
printf "cloned/sub1/sub2 " ; hg id -R cloned/sub1/sub2

echo % debugsub output for main and sub1
hg debugsub -R cloned
hg debugsub -R cloned/sub1

exit 0