Mercurial > hgrepos > DevTools > mercurial-extensions
changeset 380:02da2f42acc2
Make timestamps Mercurial 5.0.1 compatible: the signature of many functions in mercurial.match has changed.
Provide wrapper calls based in inspection of formal arguments.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sun, 14 Jul 2019 16:23:49 +0200 |
| parents | 20c505821a6d |
| children | 77330f43daf1 |
| files | extensions/timestamps.py |
| diffstat | 1 files changed, 24 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/extensions/timestamps.py Fri Jul 12 19:13:00 2019 +0200 +++ b/extensions/timestamps.py Sun Jul 14 16:23:49 2019 +0200 @@ -70,6 +70,7 @@ import calendar import collections import datetime +import inspect import io import itertools import os @@ -107,7 +108,7 @@ else: command = cmdutil.command(cmdtable) -testedwith = "4.5.2 4.6.1 4.8.1 4.9" +testedwith = "4.5.2 4.6.1 4.8.1 4.9 5.0.1" def getversion(): @@ -330,7 +331,7 @@ fstatus = self.status( match=_matchmod.differencematcher( match, - _matchmod.exact( + _matchmod_exact( self.root, '', [TIMESTAMPS_DATABASE, @@ -354,7 +355,7 @@ # ensure the database file is really tracked dbstatus = self.status( - match=_matchmod.exact(self.root, '', [TIMESTAMPS_DATABASE]), + match=_matchmod_exact(self.root, '', [TIMESTAMPS_DATABASE]), clean=True) if dbstatus.modified or dbstatus.added or dbstatus.clean: # already tracked @@ -376,7 +377,7 @@ auto_included = [] for f in (TIMESTAMPS_DATABASE, TIMESTAMPS_CONFIGFILE): fstatus = self.status( - match=_matchmod.exact(self.root, '', [f])) + match=_matchmod_exact(self.root, '', [f])) if fstatus.added or fstatus.modified: auto_included.append(f) if auto_included: @@ -386,7 +387,7 @@ # match = _matchmod.unionmatcher( [match, - _matchmod.exact(self.root, + _matchmod_exact(self.root, '', auto_included)]) self.ui.note(_("timestamps have been collected\n")) @@ -518,7 +519,7 @@ # NOTE: no need for a local repo here # tsconfmatch = _gen_matcher_from_tsconfig(ctx, tsconfig=tsconfig, ui=ui) \ - or _matchmod.never(ctx.repo().root, '') + or _matchmod_never(ctx.repo().root, '') ts = _Timestamps.from_ctx(ctx, ui, name=TIMESTAMPS_DATABASE) if ts is None: raise error.Abort(_("timestamps database file does not exist")) @@ -620,7 +621,7 @@ else: # check whether the existing configuration file is really tracked fstatus = ctx.status( - match=_matchmod.exact(repo.root, '', [TIMESTAMPS_CONFIGFILE]), + match=_matchmod_exact(repo.root, '', [TIMESTAMPS_CONFIGFILE]), listclean=True) if fstatus.modified or fstatus.added or fstatus.clean: configname = TIMESTAMPS_CONFIGFILE @@ -1226,3 +1227,19 @@ + repr(ms._stateextras) + '\n') ui.debug("UPDATE MergeState mdstate: " + repr(ms.mdstate()) + '\n') + + +if hasattr(inspect, "getfullargspec"): + # PY3 + _matchmod_with_root = "root" in inspect.getfullargspec(_matchmod.exact).args +else: + _matchmod_with_root = "root" in inspect.getargspec(_matchmod.exact).args + +if _matchmod_with_root: + _matchmod_exact = _matchmod.exact + _matchmod_never = _matchmod.never +else: + def _matchmod_exact(root, cwd, files, badfn=None): + return _matchmod.exact(files, badfn=badfn) + def _matchmod_never(root, cwd, badfn=None): + return _matchmod.never(badfn=badfn)
