# HG changeset patch # User Anton Shestakov # Date 1628373645 -10800 # Node ID d4cdba7077db876f9fbf6950669a70f4d2fd15c5 # Parent 189f4775ac2b14041685d8dca9deb2f293b50dbf compat: patch overlayworkingctx._markdirty() for hg 5.0 and earlier This is required for the fix for issue6416 (4a09e95d29c9) to work on older Mercurial versions. diff --git a/hgext3rd/evolve/compat.py b/hgext3rd/evolve/compat.py --- a/hgext3rd/evolve/compat.py +++ b/hgext3rd/evolve/compat.py @@ -493,3 +493,39 @@ flags=self.flags(path), copied=origin) context.overlayworkingctx.markcopied = fixedmarkcopied + +# what we're actually targeting here is e079e001d536 +# hg <= 5.0 (dc3fdd1b5af4) +try: + from mercurial import state as statemod + markdirtyfixed = util.safehasattr(statemod, '_statecheck') +except (AttributeError, ImportError): + markdirtyfixed = False +if not markdirtyfixed: + def fixedmarkdirty( + self, + path, + exists, + data=None, + date=None, + flags='', + copied=None, + ): + # data not provided, let's see if we already have some; if not, let's + # grab it from our underlying context, so that we always have data if + # the file is marked as existing. + if exists and data is None: + oldentry = self._cache.get(path) or {} + data = oldentry.get('data') + if data is None: + data = self._wrappedctx[path].data() + + self._cache[path] = { + 'exists': exists, + 'data': data, + 'date': date, + 'flags': flags, + 'copied': copied, + } + + context.overlayworkingctx._markdirty = fixedmarkdirty