Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 37674:f83cb91b052e
revset: pass in lookup function instead of repo (API)
And document that it's only for legacy lookup. If we have a repo, we're
likely to do more things where that shouldn't be done.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 14 Apr 2018 12:57:32 +0900 |
parents | 0c6b1ec75b73 |
children | edb28a6d95b7 37e7ae332e90 |
comparison
equal
deleted
inserted
replaced
37673:0c6b1ec75b73 | 37674:f83cb91b052e |
---|---|
2167 } | 2167 } |
2168 | 2168 |
2169 def lookupfn(repo): | 2169 def lookupfn(repo): |
2170 return lambda symbol: scmutil.isrevsymbol(repo, symbol) | 2170 return lambda symbol: scmutil.isrevsymbol(repo, symbol) |
2171 | 2171 |
2172 def match(ui, spec, repo=None): | 2172 def match(ui, spec, lookup=None): |
2173 """Create a matcher for a single revision spec""" | 2173 """Create a matcher for a single revision spec""" |
2174 return matchany(ui, [spec], repo=repo) | 2174 return matchany(ui, [spec], lookup=None) |
2175 | 2175 |
2176 def matchany(ui, specs, repo=None, localalias=None): | 2176 def matchany(ui, specs, lookup=None, localalias=None): |
2177 """Create a matcher that will include any revisions matching one of the | 2177 """Create a matcher that will include any revisions matching one of the |
2178 given specs | 2178 given specs |
2179 | |
2180 If lookup function is not None, the parser will first attempt to handle | |
2181 old-style ranges, which may contain operator characters. | |
2179 | 2182 |
2180 If localalias is not None, it is a dict {name: definitionstring}. It takes | 2183 If localalias is not None, it is a dict {name: definitionstring}. It takes |
2181 precedence over [revsetalias] config section. | 2184 precedence over [revsetalias] config section. |
2182 """ | 2185 """ |
2183 if not specs: | 2186 if not specs: |
2184 def mfunc(repo, subset=None): | 2187 def mfunc(repo, subset=None): |
2185 return baseset() | 2188 return baseset() |
2186 return mfunc | 2189 return mfunc |
2187 if not all(specs): | 2190 if not all(specs): |
2188 raise error.ParseError(_("empty query")) | 2191 raise error.ParseError(_("empty query")) |
2189 lookup = None | |
2190 if repo: | |
2191 lookup = lookupfn(repo) | |
2192 if len(specs) == 1: | 2192 if len(specs) == 1: |
2193 tree = revsetlang.parse(specs[0], lookup) | 2193 tree = revsetlang.parse(specs[0], lookup) |
2194 else: | 2194 else: |
2195 tree = ('or', | 2195 tree = ('or', |
2196 ('list',) + tuple(revsetlang.parse(s, lookup) for s in specs)) | 2196 ('list',) + tuple(revsetlang.parse(s, lookup) for s in specs)) |