From 1804c7dd2b0ad78236e20f25a7e15f88a92a5c81 Mon Sep 17 00:00:00 2001
From: felmer <franz-josef.elmer@id.ethz.ch>
Date: Mon, 15 Feb 2021 13:46:50 +0100
Subject: [PATCH] SSDM-10611: adapting in backward compatible way to work also
 with git-annex version 8

---
 obis/src/python/obis/dm/git.py | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/obis/src/python/obis/dm/git.py b/obis/src/python/obis/dm/git.py
index db568d12296..13b3d421de0 100644
--- a/obis/src/python/obis/dm/git.py
+++ b/obis/src/python/obis/dm/git.py
@@ -39,6 +39,12 @@ class GitWrapper(object):
         if self._git(['annex', 'help']).failure():
             # git help should have a returncode of 0
             return False
+        result = self._git(['annex', 'version'])
+        if result.success():
+            first_line = result.output.split("\n")[0].split(":")
+            if len(first_line) > 1:
+                self.annex_version = first_line[1].strip()
+                self.annex_major_version = int(self.version.split(".")[0])
         return True
 
     def git_init(self):
@@ -72,7 +78,7 @@ class GitWrapper(object):
             return result
 
         # direct mode so annex uses hard links instead of soft links
-        cmd = ["annex", "direct"]
+        cmd = ["annex", "unlock" if self.annex_major_version >= 8 else "direct"]
         result = self._git(cmd)
         if result.failure():
             return result
@@ -112,7 +118,10 @@ class GitWrapper(object):
 
     def git_add(self, path):
         # git annex add to avoid out of memory error when adding files bigger than RAM
-        return self._git(["annex", "add", path, "--include-dotfiles"])
+        cmd = ["annex", "add", path]
+        if self.annex_major_version < 8:
+            cmd.append("--include-dotfiles")
+        return self._git(cmd)
 
     def git_commit(self, msg):
         return self._git(['commit', '--allow-empty', '-m', msg])
-- 
GitLab