changeset 3298:f4b06f44d274

memfilectx: changectx argument is not mandatory As changectx argument is now mandatory for memfilectx, add a compatibility layer to pass it when necessary. The commit that made the parament mandatory in core is 8a0cac20a1ad
author Boris Feld <boris.feld@octobus.net>
date Fri, 15 Dec 2017 10:14:42 +0100
parents 4d7e002a2bb5
children c089495d7701
files hgext3rd/evolve/__init__.py hgext3rd/evolve/cmdrewrite.py hgext3rd/evolve/compat.py hgext3rd/evolve/rewriteutil.py
diffstat 4 files changed, 20 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/hgext3rd/evolve/__init__.py	Sat Dec 16 23:52:32 2017 +0100
+++ b/hgext3rd/evolve/__init__.py	Fri Dec 15 10:14:42 2017 +0100
@@ -1830,10 +1830,7 @@
             if path in bumped:
                 fctx = bumped[path]
                 flags = fctx.flags()
-                mctx = context.memfilectx(repo, fctx.path(), fctx.data(),
-                                          islink='l' in flags,
-                                          isexec='x' in flags,
-                                          copied=copied.get(path))
+                mctx = compat.memfilectx(repo, ctx, fctx, flags, copied, path)
                 return mctx
             return None
         text = 'bumped update to %s:\n\n' % prec
--- a/hgext3rd/evolve/cmdrewrite.py	Sat Dec 16 23:52:32 2017 +0100
+++ b/hgext3rd/evolve/cmdrewrite.py	Fri Dec 15 10:14:42 2017 +0100
@@ -179,10 +179,7 @@
             return None
         fctx = contentctx[path]
         flags = fctx.flags()
-        mctx = context.memfilectx(repo, fctx.path(), fctx.data(),
-                                  islink='l' in flags,
-                                  isexec='x' in flags,
-                                  copied=copied.get(path))
+        mctx = compat.memfilectx(repo, memctx, fctx, flags, copied, path)
         return mctx
 
     if message is None:
--- a/hgext3rd/evolve/compat.py	Sat Dec 16 23:52:32 2017 +0100
+++ b/hgext3rd/evolve/compat.py	Fri Dec 15 10:14:42 2017 +0100
@@ -195,3 +195,20 @@
         copies.duplicatecopies(repo, rev, fromrev, skiprev=skiprev)
     else:
         copies.duplicatecopies(repo, wctx, rev, fromrev, skiprev=skiprev)
+
+def memfilectx(repo, ctx, fctx, flags, copied, path):
+    # XXX Would it be better at the module level?
+    varnames = context.memfilectx.__init__.__code__.co_varnames
+    ctxmandatory = varnames[2] == "changectx"
+
+    if ctxmandatory:
+        mctx = context.memfilectx(repo, ctx, fctx.path(), fctx.data(),
+                                  islink='l' in flags,
+                                  isexec='x' in flags,
+                                  copied=copied.get(path))
+    else:
+        mctx = context.memfilectx(repo, fctx.path(), fctx.data(),
+                                  islink='l' in flags,
+                                  isexec='x' in flags,
+                                  copied=copied.get(path))
+    return mctx
--- a/hgext3rd/evolve/rewriteutil.py	Sat Dec 16 23:52:32 2017 +0100
+++ b/hgext3rd/evolve/rewriteutil.py	Fri Dec 15 10:14:42 2017 +0100
@@ -201,10 +201,7 @@
             if path in headmf:
                 fctx = head[path]
                 flags = fctx.flags()
-                mctx = context.memfilectx(repo, fctx.path(), fctx.data(),
-                                          islink='l' in flags,
-                                          isexec='x' in flags,
-                                          copied=copied.get(path))
+                mctx = compat.memfilectx(repo, ctx, fctx, flags, copied, path)
                 return mctx
             return None