Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9340653
D7015.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Subscribers
None
D7015.diff
View Options
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
Details
Attached
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
Attached To
D7015: replay: Use peg_rev parameter of client.export instead of rev
Event Timeline
Log In to Comment