diff --git a/hggit/__init__.py b/hggit/__init__.py index d153586c28f8e639b17a049ab599917ec8a87331_aGdnaXQvX19pbml0X18ucHk=..e5b10a710036dbfcf146f9d627d860f6b05ef0e0_aGdnaXQvX19pbml0X18ucHk= 100644 --- a/hggit/__init__.py +++ b/hggit/__init__.py @@ -34,7 +34,12 @@ from mercurial import extensions from mercurial import help from mercurial import hg -from mercurial import ignore +try: + from mercurial import ignore + ignoremod = True +except ImportError: + # The ignore module disappeared in Mercurial 3.5 + ignoremod = False from mercurial import localrepo from mercurial import manifest from mercurial.node import hex @@ -164,6 +169,6 @@ return verify.verify(ui, repo, ctx) if (getattr(dirstate, 'rootcache', False) and - getattr(ignore, 'readpats', False)): + (not ignoremod or getattr(ignore, 'readpats', False))): # only install our dirstate wrapper if it has a hope of working import gitdirstate @@ -168,6 +173,9 @@ # only install our dirstate wrapper if it has a hope of working import gitdirstate - extensions.wrapfunction(ignore, 'ignore', gitdirstate.gignore) + if ignoremod: + def ignorewrap(orig, *args, **kwargs): + return gitdirstate.gignore(*args, **kwargs) + extensions.wrapfunction(ignore, 'ignore', ignorewrap) dirstate.dirstate = gitdirstate.gitdirstate @command('git-cleanup') diff --git a/hggit/gitdirstate.py b/hggit/gitdirstate.py index d153586c28f8e639b17a049ab599917ec8a87331_aGdnaXQvZ2l0ZGlyc3RhdGUucHk=..e5b10a710036dbfcf146f9d627d860f6b05ef0e0_aGdnaXQvZ2l0ZGlyc3RhdGUucHk= 100644 --- a/hggit/gitdirstate.py +++ b/hggit/gitdirstate.py @@ -4,7 +4,12 @@ import errno from mercurial import dirstate -from mercurial import ignore +try: + from mercurial import ignore + ignoremod = True +except: + # ignore module was removed in Mercurial 3.5 + ignoremod = False from mercurial import match as matchmod from mercurial import osutil from mercurial import scmutil @@ -62,6 +67,5 @@ return patterns, warnings -def gignore(orig, root, files, warn, extrapatterns=None): - pats = ignore.readpats(root, files, warn) +def gignore(root, files, warn, extrapatterns=None): allpats = [] @@ -67,3 +71,11 @@ allpats = [] + pats = [] + if ignoremod: + pats = ignore.readpats(root, files, warn) + for f, patlist in pats: + allpats.extend(patlist) + else: + allpats.extend(['include:%s' % f for f in files]) + if extrapatterns: allpats.extend(extrapatterns) @@ -68,7 +80,5 @@ if extrapatterns: allpats.extend(extrapatterns) - for f, patlist in pats: - allpats.extend(patlist) if not allpats: return util.never try: @@ -110,7 +120,7 @@ for warning in warnings: self._ui.warn("%s: %s\n" % (fn, warning)) patterns.extend(pats) - return ignore.ignore(self._root, files, self._ui.warn, + return gignore(self._root, files, self._ui.warn, extrapatterns=patterns) def _finddotgitignores(self):