subrepo: pull revisions on demand when archiving hg subrepos
Before, running 'hg archive -S' could result in
abort: unknown revision '
65903cebad86f1a84bd4f1134f62fa7dcb7a1c98'!
if a subrepo was missing completely or had missing changesets. Now,
the missing changesets will be pulled or cloned as appropriate.
This make Mercurial subrepos match Git subrepos which already took
care to fetch any missing commits before starting the archive.
$ "$TESTDIR/hghave" execbit || exit 80
$ hg init
$ echo a > a
$ hg ci -Am'not executable'
adding a
$ chmod +x a
$ hg ci -m'executable'
$ hg id
79abf14474dc tip
Make sure we notice the change of mode if the cached size == -1:
$ hg rm a
$ hg revert -r 0 a
$ hg debugstate
n 0 -1 unset a
$ hg status
M a
$ hg up 0
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg id
d69afc33ff8a
$ test -x a && echo executable -- bad || echo not executable -- good
not executable -- good