def grep(repo, pattern, files, revisions=None, ignore_case=False, wdfiles=True): ui = CaptureUI() args = [ui, repo, pattern] args.extend(files) revisions = [ ":".join(rev) if type(rev) is list else rev for rev in revisions ] if not revisions: revisions = None kwargs = { 'rev': revisions, 'ignore_case': bool(ignore_case), 'line_number': True, 'print0': True } cs = g_cs(repo, '.') kwargs['follow'] = not [f for f in files if f not in cs] run_in_dir(repo.root, commands.grep, *args, **kwargs) items = (ui._getCaptured(verbatim=True)).split("\0") # XXX grep uses "\0" as a terminator, thus last line ends with "\0" items.pop() r_vim = [] status_cache = {} def check_not_modified_since(rev, file): key = rev + ':' + file if key in status_cache: return status_cache[key] r = file in repo.status(node1=rev, clean=True, match=match.match(None, None, [file], exact=True))[6] status_cache[key] = r return r while items: file = items.pop(0) rev = items.pop(0) lnum = int(items.pop(0)) text = items.pop(0) if wdfiles and check_not_modified_since(rev, file): file = os.path.join(repo.root, file) else: file = (rev, file) r_vim.append({'filename': file, 'lnum': int(lnum), 'text': text}) return r_vim
def grep(repo, pattern, files, revisions=None, ignore_case=False, wdfiles=True): ui=CaptureUI() args=[ui, repo, pattern] args.extend(files) revisions=[":".join(rev) if type(rev) is list else rev for rev in revisions] if not revisions: revisions=None kwargs={'rev': revisions, 'ignore_case': bool(ignore_case), 'line_number': True, 'print0': True} cs=g_cs(repo, '.') kwargs['follow']=not [f for f in files if f not in cs] run_in_dir(repo.root, commands.grep, *args, **kwargs) items=(ui._getCaptured(verbatim=True)).split("\0") # XXX grep uses "\0" as a terminator, thus last line ends with "\0" items.pop() r_vim=[] status_cache={} def check_not_modified_since(rev, file): key=rev+':'+file if key in status_cache: return status_cache[key] r=file in repo.status(node1=rev, clean=True, match=match.match(None, None, [file], exact=True))[6] status_cache[key]=r return r while items: file=items.pop(0) rev=items.pop(0) lnum=int(items.pop(0)) text=items.pop(0) if wdfiles and check_not_modified_since(rev, file): file=os.path.join(repo.root, file) else: file=(rev, file) r_vim.append({'filename': file, 'lnum': int(lnum), 'text': text}) return r_vim
def diff(*args, **kwargs): ui=CaptureUI() dodiff(ui, *args, **kwargs) return ui._getCaptured()
def diff(*args, **kwargs): ui = CaptureUI() dodiff(ui, *args, **kwargs) return ui._getCaptured()