merge: skip syntactic path checks in [_checkunknownfile]
We don't need to check the paths syntactically, since they are coming from
diffing the revisions, so hopefully already checked on the way in.
We still need to check what's on the filesystem, to avoid traversing the
symlinks or subdirs, which we can't know about statically.
Also, we use the directory audit to elide [isfileorlink],
this removing ~all lstat calls from hg updates from-empty.
import argparse
import os
ap = argparse.ArgumentParser()
ap.add_argument('path', nargs='+')
opts = ap.parse_args()
def gather():
for p in opts.path:
if not os.path.exists(p):
return
if os.path.isdir(p):
yield p + os.path.sep
for dirpath, dirs, files in os.walk(p):
for d in dirs:
yield os.path.join(dirpath, d) + os.path.sep
for f in files:
yield os.path.join(dirpath, f)
else:
yield p
print('\n'.join(sorted(gather(), key=lambda x: x.replace(os.path.sep, '/'))))