patchbomb: add a 'patchbomb.intro' option
This option allows the user to control the default behavior for
including an introduction message. This avoids having to tirelessly
skip the intro for people contributing to Mercurial.
The three possibles values are:
- always,
- auto (default, current behavior),
- never.
I was thinking of ("true", "false", "") (empty value being auto) but I ruled it
out as too confusing.
This new config option reuses the pre-existing 'patchbomb' section.
import os
from mercurial import hg, ui
from mercurial.scmutil import walkrepos
from mercurial.util import checklink
from os import mkdir, chdir
from os.path import join as pjoin
u = ui.ui()
sym = checklink('.')
hg.repository(u, 'top1', create=1)
mkdir('subdir')
chdir('subdir')
hg.repository(u, 'sub1', create=1)
mkdir('subsubdir')
chdir('subsubdir')
hg.repository(u, 'subsub1', create=1)
chdir(os.path.pardir)
if sym:
os.symlink(os.path.pardir, 'circle')
os.symlink(pjoin('subsubdir', 'subsub1'), 'subsub1')
def runtest():
reposet = frozenset(walkrepos('.', followsym=True))
if sym and (len(reposet) != 3):
print "reposet = %r" % (reposet,)
print ("Found %d repositories when I should have found 3"
% (len(reposet),))
if (not sym) and (len(reposet) != 2):
print "reposet = %r" % (reposet,)
print ("Found %d repositories when I should have found 2"
% (len(reposet),))
sub1set = frozenset((pjoin('.', 'sub1'),
pjoin('.', 'circle', 'subdir', 'sub1')))
if len(sub1set & reposet) != 1:
print "sub1set = %r" % (sub1set,)
print "reposet = %r" % (reposet,)
print "sub1set and reposet should have exactly one path in common."
sub2set = frozenset((pjoin('.', 'subsub1'),
pjoin('.', 'subsubdir', 'subsub1')))
if len(sub2set & reposet) != 1:
print "sub2set = %r" % (sub2set,)
print "reposet = %r" % (reposet,)
print "sub1set and reposet should have exactly one path in common."
sub3 = pjoin('.', 'circle', 'top1')
if sym and sub3 not in reposet:
print "reposet = %r" % (reposet,)
print "Symbolic links are supported and %s is not in reposet" % (sub3,)
runtest()
if sym:
# Simulate not having symlinks.
del os.path.samestat
sym = False
runtest()