Fetch the remote crypto branch, rather than cloning it
diff --git a/scripts/abi_check.py b/scripts/abi_check.py
index 1931691..d23b038 100755
--- a/scripts/abi_check.py
+++ b/scripts/abi_check.py
@@ -151,29 +151,31 @@
             return
 
         if version.crypto_repository:
-            shutil.rmtree(os.path.join(git_worktree_path, "crypto"))
-            clone_process = subprocess.Popen(
-                [self.git_command, "clone", version.crypto_repository,
-                 "--branch", version.crypto_revision, "crypto"],
-                cwd=git_worktree_path,
-                stdout=subprocess.PIPE,
-                stderr=subprocess.STDOUT
-            )
-            clone_output, _ = clone_process.communicate()
-            self.log.info(clone_output.decode("utf-8"))
-            if clone_process.returncode != 0:
-                raise Exception("git clone failed, aborting")
-        else:
-            checkout_process = subprocess.Popen(
-                [self.git_command, "checkout", version.crypto_revision],
+            fetch_process = subprocess.Popen(
+                [self.git_command, "fetch", version.crypto_repository,
+                 version.crypto_revision],
                 cwd=os.path.join(git_worktree_path, "crypto"),
                 stdout=subprocess.PIPE,
                 stderr=subprocess.STDOUT
             )
-            checkout_output, _ = checkout_process.communicate()
-            self.log.info(checkout_output.decode("utf-8"))
-            if checkout_process.returncode != 0:
-                raise Exception("git checkout failed, aborting")
+            fetch_output, _ = fetch_process.communicate()
+            self.log.info(fetch_output.decode("utf-8"))
+            if fetch_process.returncode != 0:
+                raise Exception("git fetch failed, aborting")
+            crypto_rev = "FETCH_HEAD"
+        else:
+            crypto_rev = version.crypto_revision
+
+        checkout_process = subprocess.Popen(
+            [self.git_command, "checkout", crypto_rev],
+            cwd=os.path.join(git_worktree_path, "crypto"),
+            stdout=subprocess.PIPE,
+            stderr=subprocess.STDOUT
+        )
+        checkout_output, _ = checkout_process.communicate()
+        self.log.info(checkout_output.decode("utf-8"))
+        if checkout_process.returncode != 0:
+            raise Exception("git checkout failed, aborting")
 
     def _build_shared_libraries(self, git_worktree_path, version):
         """Build the shared libraries in the specified worktree."""