##// END OF EJS Templates
setup: fix the py2exe logic to work with py3...
setup: fix the py2exe logic to work with py3 TortoiseHg still uses (the modernized) py2exe packaging, but the build was failing since `py2exe.Distribution` was removed. One thing to note is that later in this module, there's a hack to include `distutils` when building from a virtualenv. While `import distutils` works in `hg debugshell` when built with py2, it doesn't work in py3. I'm not sure why- I don't see it in `library.zip` either. It doesn't seem to break anything though. Differential Revision: https://phab.mercurial-scm.org/D12553

File last commit:

r49730:6000f5b2 default
r49946:11fc5d8a default
Show More
narrowdirstate.py
75 lines | 2.5 KiB | text/x-python | PythonLexer
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 # narrowdirstate.py - extensions to mercurial dirstate to support narrow clones
#
# Copyright 2017 Google, Inc.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from mercurial.i18n import _
Augie Fackler
formatting: blacken the codebase...
r43346 from mercurial import error
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096
Kyle Lippincott
narrow: only wrap dirstate functions once, instead of per-reposetup...
r38142 def wrapdirstate(repo, dirstate):
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 """Add narrow spec dirstate ignore, block changes outside narrow spec."""
Kyle Lippincott
narrow: only wrap dirstate functions once, instead of per-reposetup...
r38142 def _editfunc(fn):
Valentin Gatien-Baron
merge: fix race that could cause wrong size in dirstate...
r42656 def _wrapper(self, *args, **kwargs):
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096 narrowmatch = repo.narrowmatch()
for f in args:
Martin von Zweigbergk
narrow: avoid looking up dirstate again when editing dirstate...
r39996 if f is not None and not narrowmatch(f) and f not in self:
Augie Fackler
formatting: blacken the codebase...
r43346 raise error.Abort(
_(
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 b"cannot track '%s' - it is outside "
+ b"the narrow clone"
Augie Fackler
formatting: blacken the codebase...
r43346 )
% f
)
Valentin Gatien-Baron
merge: fix race that could cause wrong size in dirstate...
r42656 return fn(self, *args, **kwargs)
Augie Fackler
formatting: blacken the codebase...
r43346
Kyle Lippincott
narrow: only wrap dirstate functions once, instead of per-reposetup...
r38142 return _wrapper
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096
Kyle Lippincott
narrow: only wrap dirstate functions once, instead of per-reposetup...
r38142 class narrowdirstate(dirstate.__class__):
# Prevent adding/editing/copying/deleting files that are outside the
# sparse checkout
@_editfunc
Valentin Gatien-Baron
merge: fix race that could cause wrong size in dirstate...
r42656 def normal(self, *args, **kwargs):
return super(narrowdirstate, self).normal(*args, **kwargs)
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096
Kyle Lippincott
narrow: only wrap dirstate functions once, instead of per-reposetup...
r38142 @_editfunc
win32text: drop associated dirstate cache information on revert...
r49211 def set_tracked(self, *args, **kwargs):
return super(narrowdirstate, self).set_tracked(*args, **kwargs)
dirstate: add a `set_tracked` method for "hg add"-like usage...
r48393
@_editfunc
dirstate: add a `set_untracked` method for "hg remove"-like usage...
r48399 def set_untracked(self, *args):
return super(narrowdirstate, self).set_untracked(*args)
@_editfunc
Kyle Lippincott
narrow: only wrap dirstate functions once, instead of per-reposetup...
r38142 def add(self, *args):
return super(narrowdirstate, self).add(*args)
@_editfunc
def normallookup(self, *args):
return super(narrowdirstate, self).normallookup(*args)
@_editfunc
def copy(self, *args):
return super(narrowdirstate, self).copy(*args)
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096
Kyle Lippincott
narrow: only wrap dirstate functions once, instead of per-reposetup...
r38142 @_editfunc
def remove(self, *args):
return super(narrowdirstate, self).remove(*args)
@_editfunc
def merge(self, *args):
return super(narrowdirstate, self).merge(*args)
def rebuild(self, parent, allfiles, changedfiles=None):
if changedfiles is None:
# Rebuilding entire dirstate, let's filter allfiles to match the
# narrowspec.
allfiles = [f for f in allfiles if repo.narrowmatch()(f)]
super(narrowdirstate, self).rebuild(parent, allfiles, changedfiles)
Augie Fackler
narrow: import experimental extension from narrowhg revision cb51d673e9c5...
r36096
Kyle Lippincott
narrow: only wrap dirstate functions once, instead of per-reposetup...
r38142 dirstate.__class__ = narrowdirstate
return dirstate