--- a/mercurial/grep.py Wed Sep 09 15:23:49 2020 +0900
+++ b/mercurial/grep.py Wed Sep 09 15:56:40 2020 +0900
@@ -9,7 +9,11 @@
import difflib
-from . import pycompat
+from . import (
+ pycompat,
+ scmutil,
+ util,
+)
def matchlines(body, regexp):
@@ -69,3 +73,20 @@
yield (b'-', a[i])
for i in pycompat.xrange(blo, bhi):
yield (b'+', b[i])
+
+
+class grepsearcher(object):
+ """Search files and revisions for lines matching the given pattern"""
+
+ def __init__(self, ui, repo, regexp):
+ self._ui = ui
+ self._repo = repo
+ self._regexp = regexp
+
+ self._getfile = util.lrucachefunc(repo.file)
+ self._getrenamed = scmutil.getrenamedfn(repo)
+
+ self._matches = {}
+ self._copies = {}
+ self._skip = set()
+ self._revfiles = {}