Page MenuHomeSoftware Heritage

D7015.diff
No OneTemporary

D7015.diff

diff --git a/swh/loader/svn/replay.py b/swh/loader/svn/replay.py
--- a/swh/loader/svn/replay.py
+++ b/swh/loader/svn/replay.py
@@ -305,7 +305,7 @@
self.svnrepo.client.export(
os.path.join(self.svnrepo.remote_url.encode(), self.path),
to=self.fullpath,
- rev=self.editor.revnum,
+ peg_rev=self.editor.revnum,
ignore_keywords=True,
overwrite=True,
)
@@ -599,7 +599,7 @@
self.svnrepo.client.export(
external_url.rstrip("/"),
to=temp_path,
- rev=revision,
+ peg_rev=revision,
ignore_keywords=True,
)
self.editor.externals_cache[external] = temp_path
@@ -696,7 +696,7 @@
self.svnrepo.client.export(
svn_urljoin(self.svnrepo.remote_url, os.fsdecode(fullpath)),
to=dest_path,
- rev=self.editor.revnum,
+ peg_rev=self.editor.revnum,
ignore_keywords=True,
)
if os.path.isfile(dest_path):
diff --git a/swh/loader/svn/tests/test_loader.py b/swh/loader/svn/tests/test_loader.py
--- a/swh/loader/svn/tests/test_loader.py
+++ b/swh/loader/svn/tests/test_loader.py
@@ -2523,3 +2523,90 @@
loader.storage, repo_url, status="full", type="svn",
)
check_snapshot(loader.snapshot, loader.storage)
+
+
+def test_loader_export_external_path_using_peg_rev(
+ swh_storage, repo_url, external_repo_url, tmp_path
+):
+ # first commit on external
+ add_commit(
+ external_repo_url,
+ "Create a file in an external repository",
+ [
+ CommitChange(
+ change_type=CommitChangeType.AddOrUpdate,
+ path="code/foo.sh",
+ data=b"#!/bin/bash\necho foo",
+ ),
+ ],
+ )
+
+ # second commit on external
+ add_commit(
+ external_repo_url,
+ "Remove previously added file",
+ [CommitChange(change_type=CommitChangeType.Delete, path="code/foo.sh",),],
+ )
+
+ # third commit on external
+ add_commit(
+ external_repo_url,
+ "Add file again but with different content",
+ [
+ CommitChange(
+ change_type=CommitChangeType.AddOrUpdate,
+ path="code/foo.sh",
+ data=b"#!/bin/bash\necho bar",
+ ),
+ ],
+ )
+
+ # first commit
+ add_commit(
+ repo_url,
+ "Add trunk dir",
+ [CommitChange(change_type=CommitChangeType.AddOrUpdate, path="trunk/",),],
+ )
+
+ # second commit
+ add_commit(
+ repo_url,
+ "Set external on trunk targeting first revision of external repo",
+ [
+ CommitChange(
+ change_type=CommitChangeType.AddOrUpdate,
+ path="trunk/",
+ properties={
+ "svn:externals": (
+ f"{svn_urljoin(external_repo_url, 'code/foo.sh')}@1 foo.sh"
+ )
+ },
+ ),
+ ],
+ )
+
+ # third commit
+ add_commit(
+ repo_url,
+ "Modify external on trunk to target third revision of external repo",
+ [
+ CommitChange(
+ change_type=CommitChangeType.AddOrUpdate,
+ path="trunk/",
+ properties={
+ "svn:externals": (
+ f"{svn_urljoin(external_repo_url, 'code/foo.sh')}@3 foo.sh"
+ )
+ },
+ ),
+ ],
+ )
+
+ loader = SvnLoader(
+ swh_storage, repo_url, temp_directory=tmp_path, check_revision=1,
+ )
+ assert loader.load() == {"status": "eventful"}
+ assert_last_visit_matches(
+ loader.storage, repo_url, status="full", type="svn",
+ )
+ check_snapshot(loader.snapshot, loader.storage)

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 3, 10:57 AM (4 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3226148

Event Timeline