D6021: templatekw: move getrenamedfn() to scmutil (API)
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Sun Feb 24 08:26:10 UTC 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rHGe9b9ee9af4a9: templatekw: move getrenamedfn() to scmutil (API) (authored by martinvonz, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D6021?vs=14209&id=14224
REVISION DETAIL
https://phab.mercurial-scm.org/D6021
AFFECTED FILES
hgext/remotefilelog/__init__.py
mercurial/commands.py
mercurial/scmutil.py
mercurial/templatekw.py
CHANGE DETAILS
diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
--- a/mercurial/templatekw.py
+++ b/mercurial/templatekw.py
@@ -104,37 +104,6 @@
latesttags[rev] = pdate, pdist + 1, ptag
return latesttags[rev]
-def getrenamedfn(repo, endrev=None):
- rcache = {}
- if endrev is None:
- endrev = len(repo)
-
- def getrenamed(fn, rev):
- '''looks up all renames for a file (up to endrev) the first
- time the file is given. It indexes on the changerev and only
- parses the manifest if linkrev != changerev.
- Returns rename info for fn at changerev rev.'''
- if fn not in rcache:
- rcache[fn] = {}
- fl = repo.file(fn)
- for i in fl:
- lr = fl.linkrev(i)
- renamed = fl.renamed(fl.node(i))
- rcache[fn][lr] = renamed and renamed[0]
- if lr >= endrev:
- break
- if rev in rcache[fn]:
- return rcache[fn][rev]
-
- # If linkrev != rev (i.e. rev not found in rcache) fallback to
- # filectx logic.
- try:
- return repo[rev][fn].copysource()
- except error.LookupError:
- return None
-
- return getrenamed
-
def getlogcolumns():
"""Return a dict of log column labels"""
_ = pycompat.identity # temporarily disable gettext
@@ -343,7 +312,7 @@
copies = context.resource(mapping, 'revcache').get('copies')
if copies is None:
if 'getrenamed' not in cache:
- cache['getrenamed'] = getrenamedfn(repo)
+ cache['getrenamed'] = scmutil.getrenamedfn(repo)
copies = []
getrenamed = cache['getrenamed']
for fn in ctx.files():
diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -1191,6 +1191,37 @@
for new, old in renames.iteritems():
wctx.copy(old, new)
+def getrenamedfn(repo, endrev=None):
+ rcache = {}
+ if endrev is None:
+ endrev = len(repo)
+
+ def getrenamed(fn, rev):
+ '''looks up all renames for a file (up to endrev) the first
+ time the file is given. It indexes on the changerev and only
+ parses the manifest if linkrev != changerev.
+ Returns rename info for fn at changerev rev.'''
+ if fn not in rcache:
+ rcache[fn] = {}
+ fl = repo.file(fn)
+ for i in fl:
+ lr = fl.linkrev(i)
+ renamed = fl.renamed(fl.node(i))
+ rcache[fn][lr] = renamed and renamed[0]
+ if lr >= endrev:
+ break
+ if rev in rcache[fn]:
+ return rcache[fn][rev]
+
+ # If linkrev != rev (i.e. rev not found in rcache) fallback to
+ # filectx logic.
+ try:
+ return repo[rev][fn].copysource()
+ except error.LookupError:
+ return None
+
+ return getrenamed
+
def dirstatecopy(ui, repo, wctx, src, dst, dryrun=False, cwd=None):
"""Update the dirstate to reflect the intent of copying src to dst. For
different reasons it might not end with dst being marked as copied from src.
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -61,7 +61,6 @@
state as statemod,
streamclone,
tags as tagsmod,
- templatekw,
ui as uimod,
util,
wireprotoserver,
@@ -3884,7 +3883,7 @@
endrev = None
if revs:
endrev = revs.max() + 1
- getrenamed = templatekw.getrenamedfn(repo, endrev=endrev)
+ getrenamed = scmutil.getrenamedfn(repo, endrev=endrev)
ui.pager('log')
displayer = logcmdutil.changesetdisplayer(ui, repo, opts, differ,
diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py
--- a/hgext/remotefilelog/__init__.py
+++ b/hgext/remotefilelog/__init__.py
@@ -159,7 +159,6 @@
scmutil,
smartset,
streamclone,
- templatekw,
util,
)
from . import (
@@ -557,7 +556,7 @@
extensions.wrapfunction(dispatch, 'runcommand', runcommand)
# disappointing hacks below
- templatekw.getrenamedfn = getrenamedfn
+ scmutil.getrenamedfn = getrenamedfn
extensions.wrapfunction(revset, 'filelog', filelogrevset)
revset.symbols['filelog'] = revset.filelog
extensions.wrapfunction(cmdutil, 'walkfilerevs', walkfilerevs)
To: martinvonz, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list