Skip to content

Commit 7429789

Browse files
Merge pull request #9501 from ebuzerdrmz44/fix/transfer-cwd-metadata
Fixes #9495 preserve cwd archive metadata
2 parents be640e9 + 6b51f36 commit 7429789

3 files changed

Lines changed: 6 additions & 0 deletions

File tree

src/borg/archive.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -711,6 +711,8 @@ def save(self, name=None, comment=None, timestamp=None, stats=None, additional_m
711711
stats = stats or self.stats
712712
metadata |= {"size": stats.osize, "nfiles": stats.nfiles}
713713
metadata |= additional_metadata or {}
714+
if metadata.get("cwd") is None:
715+
del metadata["cwd"]
714716
metadata = ArchiveItem(metadata)
715717
data = self.key.pack_metadata(metadata.as_dict())
716718
self.id = self.repo_objs.id_hash(data)

src/borg/testsuite/archiver/transfer_cmd_test.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,7 @@ def test_transfer_archive_metadata(archivers, request, monkeypatch):
363363
assert dest_archive["hostname"] == source_archive["hostname"]
364364
assert dest_archive["username"] == source_archive["username"]
365365
assert dest_archive["command_line"] == source_archive["command_line"]
366+
assert dest_archive["cwd"] == source_archive["cwd"]
366367
assert dest_archive["duration"] == source_archive["duration"]
367368
assert dest_archive["start"] == source_archive["start"]
368369
assert dest_archive["end"] == source_archive["end"]

src/borg/upgrade.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ def upgrade_archive_metadata(self, *, metadata):
3939
):
4040
if hasattr(metadata, attr):
4141
new_metadata[attr] = getattr(metadata, attr)
42+
new_metadata["cwd"] = getattr(metadata, "cwd", None) # None signals save() to leave cwd unset
4243
rechunking = self.args.chunker_params is not None
4344
if rechunking:
4445
# if we are rechunking while transferring, we take the new chunker_params.
@@ -152,6 +153,8 @@ def upgrade_archive_metadata(self, *, metadata):
152153
for attr in ("hostname", "username", "comment", "chunker_params"):
153154
if hasattr(metadata, attr):
154155
new_metadata[attr] = getattr(metadata, attr)
156+
# if cwd is None, we want to drop it from metadata, so we set it to None here, and save() will drop it.
157+
new_metadata["cwd"] = getattr(metadata, "cwd", None)
155158
rechunking = self.args.chunker_params is not None
156159
if rechunking:
157160
# if we are rechunking while transferring, we take the new chunker_params.

0 commit comments

Comments
 (0)