[PATCH] memctx: add a version field for filectxfn

Siddharth Agarwal sid0 at fb.com
Sat Aug 30 07:33:11 CDT 2014


# HG changeset patch
# User Siddharth Agarwal <sid0 at fb.com>
# Date 1409401778 25200
#      Sat Aug 30 05:29:38 2014 -0700
# Node ID 9d6802afa661cf0ba864ef0618c69dc3cead68c9
# Parent  bdc0e04df243d3995c7266bf7d138fddd0449ba6
memctx: add a version field for filectxfn

Rev 650b5b6e75ed switched the contract for filectxfn from "raise IOError if
file is missing" to "return None if file is missing". Out of tree extensions
need to be updated for that, but for extensions interested in compatibility
with both Mercurial <= 3.1 and default, it is next to impossible to introspect
core Mercurial to figure out what to do.

This patch adds a version field for extensions to look at.

diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -1593,6 +1593,13 @@
     supported by util.parsedate() and defaults to current date, extra
     is a dictionary of metadata or is left empty.
     """
+
+    # This allows extensions to obey the current filectxfn contract.
+    # Undefined ("version 0"): filectxfn should raise IOError if the file isn't
+    #                          present. For Mercurial <= 3.1.
+    # Version 1: filectxfn should return None if the file isn't present.
+    filectxfnversion = 1
+
     def __init__(self, repo, parents, text, files, filectxfn, user=None,
                  date=None, extra=None, editor=False):
         super(memctx, self).__init__(repo, text, user, date, extra)


More information about the Mercurial-devel mailing list