summaryrefslogtreecommitdiff
path: root/dev-vcs/hg-git/files/hg-git-0.8.10-hg45-memctx.patch
blob: ff9d4d66d15f72e779fe64bbe8d9dd09e196567f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# HG changeset patch
# User Tony Tung <tonytung@merly.org>
# Date 1517901695 28800
# Node ID 843f409526fbea3ffde674922b730075d5cfd4d3
# Parent  6dc827703bfb995b89b0da5b2e9eaffe3479ea45
compat: pass memctx to memfilectx constructor on hg 4.5+

diff --git a/hggit/git_handler.py b/hggit/git_handler.py
--- a/hggit/git_handler.py
+++ b/hggit/git_handler.py
@@ -985,16 +985,22 @@
                 if copied:
                     copied_path = copied[0]
 
-            try:
-                return context.memfilectx(self.repo, f, data,
-                                          islink='l' in e,
-                                          isexec='x' in e,
-                                          copied=copied_path)
-            except TypeError:
-                return context.memfilectx(f, data,
-                                          islink='l' in e,
-                                          isexec='x' in e,
-                                          copied=copied_path)
+            # Different versions of mercurial have different parameters to
+            # memfilectx.  Try them from newest to oldest.
+            args_to_try = (
+                (self.repo, memctx, f, data),   # hg 4.5+
+                (self.repo, f, data),           # hg 3.1 - 4.5
+                (f, data),                      # hg < 3.1
+            )
+            for args in args_to_try:
+                try:
+                    return context.memfilectx(*args,
+                                              islink='l' in e,
+                                              isexec='x' in e,
+                                              copied=copied_path)
+                except TypeError as ex:
+                    last_ex = ex
+            raise last_ex
 
         p1, p2 = (nullid, nullid)
         octopus = False