obsolete: disable other evolution config options if createmarkers is off
We used to raise an abort in this case, but recent changes to local clone
command (377d8fc20e34) resulted in destrepo both caring about
experimental.evolution config options and not initializing extensions.
So imagine if you had evolve and allowdivergence enabled in your ~/.hgrc. Local
clone stopped working after 377d8fc20e34 because evolve sets
experimental.evolution=all, but only on srcrepo, for destrepo the extension is
not initialized. It's possible to make local cloning work by initializing
extensions for destrepo in some cases, but in other cases (e.g. allowdivergence
in ~/.hgrc, evolve extension in original-repo/.hg/hgrc) it would still fail.
In a discussion with Pierre-Yves David it was decided to simply force other
evolution options to be false if createmarkers is not enabled.
Differential Revision: https://phab.mercurial-scm.org/D11223
#!/usr/bin/env python3
#
# docchecker - look for problematic markup
#
# Copyright 2016 timeless <timeless@mozdev.org> and others
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import, print_function
import os
import re
import sys
try:
import msvcrt
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)
except ImportError:
pass
stdout = getattr(sys.stdout, 'buffer', sys.stdout)
leadingline = re.compile(br'(^\s*)(\S.*)$')
checks = [
(
br""":hg:`[^`]*'[^`]*`""",
b"""warning: please avoid nesting ' in :hg:`...`""",
),
(br'\w:hg:`', b'warning: please have a space before :hg:'),
(
br"""(?:[^a-z][^'.])hg ([^,;"`]*'(?!hg)){2}""",
b'''warning: please use " instead of ' for hg ... "..."''',
),
]
def check(line):
messages = []
for match, msg in checks:
if re.search(match, line):
messages.append(msg)
if messages:
stdout.write(b'%s\n' % line)
for msg in messages:
stdout.write(b'%s\n' % msg)
def work(file):
(llead, lline) = (b'', b'')
for line in file:
# this section unwraps lines
match = leadingline.match(line)
if not match:
check(lline)
(llead, lline) = (b'', b'')
continue
lead, line = match.group(1), match.group(2)
if lead == llead:
if lline != b'':
lline += b' ' + line
else:
lline = line
else:
check(lline)
(llead, lline) = (lead, line)
check(lline)
def main():
for f in sys.argv[1:]:
try:
with open(f, 'rb') as file:
work(file)
except BaseException as e:
sys.stdout.write(r"failed to process %s: %s\n" % (f, e))
main()