mirror of
https://github.com/facebook/sapling.git
synced 2024-10-12 01:39:21 +03:00
584656dff3
Summary: Turned on the auto formatter. Ran `arc lint --apply-patches --take BLACK **/*.py`. Then run `arc lint` again so some other autofixers like spellchecker etc. looked at the code base. Manually accept the changes whenever they make sense, or use a workaround (ex. changing "dict()" to "dict constructor") where autofix is false positive. Disabled linters on files that are hard (i18n/polib.py) to fix, or less interesting to fix (hgsubversion tests), or cannot be fixed without breaking OSS build (FBPYTHON4). Conflicted linters (test-check-module-imports.t, part of test-check-code.t, test-check-pyflakes.t) are removed or disabled. Duplicated linters (test-check-pyflakes.t, test-check-pylint.t) are removed. An issue of the auto-formatter is lines are no longer guarnateed to be <= 80 chars. But that seems less important comparing with the benefit auto-formatter provides. As we're here, also remove test-check-py3-compat.t, as it is currently broken if `PYTHON3=/bin/python3` is set. Reviewed By: wez, phillco, simpkins, pkaush, singhsrb Differential Revision: D8173629 fbshipit-source-id: 90e248ae0c5e6eaadbe25520a6ee42d32005621b
64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
import os
|
|
|
|
from mercurial import cmdutil, registrar, scmutil, util
|
|
from mercurial.i18n import _
|
|
|
|
|
|
cmdtable = {}
|
|
command = registrar.command(cmdtable)
|
|
testedwith = "ships-with-fb-hgext"
|
|
|
|
|
|
@command(
|
|
"^catnotate",
|
|
[
|
|
("r", "rev", "", _("print the given revision"), _("REV")),
|
|
("a", "text", None, _("treat all files as text")),
|
|
],
|
|
_("[OPTION]... FILE..."),
|
|
)
|
|
def catnotate(ui, repo, file1, *args, **opts):
|
|
"""output the current or given revision of files annotated with filename
|
|
and line number.
|
|
|
|
Print the specified files as they were at the given revision. If
|
|
no revision is given, the parent of the working directory is used.
|
|
|
|
Binary files are skipped unless -a/--text option is provided.
|
|
"""
|
|
ctx = scmutil.revsingle(repo, opts.get("rev"))
|
|
matcher = scmutil.match(ctx, (file1,) + args, opts)
|
|
prefix = ""
|
|
|
|
err = 1
|
|
# modified and stripped mercurial.cmdutil.cat follows
|
|
def write(path):
|
|
fp = cmdutil.makefileobj(
|
|
repo, opts.get("output"), ctx.node(), pathname=os.path.join(prefix, path)
|
|
)
|
|
data = ctx[path].data()
|
|
if not opts.get("text") and util.binary(data):
|
|
fp.write("%s: binary file\n" % path)
|
|
return
|
|
|
|
for (num, line) in enumerate(data.split("\n"), start=1):
|
|
line = line + "\n"
|
|
fp.write("%s:%s: %s" % (path, num, line))
|
|
fp.close()
|
|
|
|
# Automation often uses hg cat on single files, so special case it
|
|
# for performance to avoid the cost of parsing the manifest.
|
|
if len(matcher.files()) == 1 and not matcher.anypats():
|
|
file = matcher.files()[0]
|
|
mfl = repo.manifestlog
|
|
mfnode = ctx.manifestnode()
|
|
if mfnode and mfl[mfnode].find(file)[0]:
|
|
write(file)
|
|
return 0
|
|
|
|
for abs in ctx.walk(matcher):
|
|
write(abs)
|
|
err = 0
|
|
|
|
return err
|