#!/bin/sh # this structure seems to tickle a bug in bundle's search for # changesets, so first we have to recreate it # # o 8 # | # | o 7 # | | # | o 6 # |/| # o | 5 # | | # o | 4 # | | # | o 3 # | | # | o 2 # |/ # o 1 # | # o 0 mkrev() { revno=$1 echo "rev $revno" echo "rev $revno" > foo.txt hg -q ci -m"rev $revno" } set -e echo "% setup test repo1" hg init repo1 cd repo1 echo "rev 0" > foo.txt hg ci -Am"rev 0" mkrev 1 # first branch mkrev 2 mkrev 3 # back to rev 1 to create second branch hg up -r1 mkrev 4 mkrev 5 # merge first branch to second branch hg up -C -r5 HGMERGE=internal:local hg merge echo "merge rev 5, rev 3" > foo.txt hg ci -m"merge first branch to second branch" # one more commit following the merge mkrev 7 # back to "second branch" to make another head hg up -r5 mkrev 8 echo "[extensions]" >> $HGRCPATH echo "graphlog=" >> $HGRCPATH echo "% the story so far" hg glog --template "{rev}\n" # check that "hg outgoing" really does the right thing echo "% sanity check of outgoing: expect revs 4 5 6 7 8" hg clone -r3 . ../repo2 # this should (and does) report 5 outgoing revisions: 4 5 6 7 8 hg outgoing --template "{rev}\n" ../repo2 echo "% test bundle (destination repo): expect 5 revisions" # this should bundle the same 5 revisions that outgoing reported, but it # actually bundles 7 hg bundle foo.bundle ../repo2 echo "% test bundle (base revision): expect 5 revisions" # this should (and does) give exactly the same result as bundle # with a destination repo... i.e. it's wrong too hg bundle --base 3 foo.bundle