diff --git a/swh/lister/julia/lister.py b/swh/lister/julia/lister.py
index fb9211f0a89ffab7d030f298032ab5839e4ac4e0..214cbcef7c324a6e0799a18c69b304b3217decf7 100644
--- a/swh/lister/julia/lister.py
+++ b/swh/lister/julia/lister.py
@@ -33,7 +33,7 @@ class JuliaLister(StatelessLister[JuliaListerPage]):
     REPO_URL = (
         "https://github.com/JuliaRegistries/General.git"  # Julia General Registry
     )
-    REPO_PATH = Path(tempfile.mkdtemp("General"))
+    REPO_PATH = Path(tempfile.mkdtemp(), "General")
     REGISTRY_PATH = REPO_PATH / "Registry.toml"
 
     def __init__(
@@ -58,10 +58,10 @@ class JuliaLister(StatelessLister[JuliaListerPage]):
 
     def get_registry_repository(self) -> None:
         """Get Julia General Registry Git repository up to date on disk"""
-        if self.REPO_PATH.exists():
-            porcelain.pull(self.REPO_PATH, remote_location=self.url)
-        else:
+        try:
             porcelain.clone(source=self.url, target=self.REPO_PATH)
+        except FileExistsError:
+            porcelain.pull(self.REPO_PATH, remote_location=self.url)
 
     def get_pages(self) -> Iterator[JuliaListerPage]:
         """Yield an iterator which returns 'page'
diff --git a/swh/lister/julia/tests/test_lister.py b/swh/lister/julia/tests/test_lister.py
index f67b0bf820f0380b6c84bf684fc58701c03d9add..6e5d2ea9bf54b96dd35678a5c979312c92b81a47 100644
--- a/swh/lister/julia/tests/test_lister.py
+++ b/swh/lister/julia/tests/test_lister.py
@@ -14,6 +14,24 @@ expected_origins = [
 ]
 
 
+def test_julia_get_registry_repository(datadir, tmp_path, swh_scheduler):
+    archive_path = Path(datadir, "fake-julia-registry-repository.tar.gz")
+    repo_url = prepare_repository_from_archive(archive_path, "General", tmp_path)
+
+    lister = JuliaLister(url=repo_url, scheduler=swh_scheduler)
+    assert not lister.REPO_PATH.exists()
+
+    lister.get_registry_repository()
+    assert lister.REPO_PATH.exists()
+    # ensure get_registry_repository is idempotent
+    lister.get_registry_repository()
+    assert lister.REPO_PATH.exists()
+
+    # ensure the repository is deleted once the lister has run
+    lister.run()
+    assert not lister.REPO_PATH.exists()
+
+
 def test_julia_lister(datadir, tmp_path, swh_scheduler):
     archive_path = Path(datadir, "fake-julia-registry-repository.tar.gz")
     repo_url = prepare_repository_from_archive(archive_path, "General", tmp_path)