From 6a3158729f5cff6afcf529544e123cbf0e5cd9d5 Mon Sep 17 00:00:00 2001 From: ebuzerdrmz44 Date: Wed, 18 Mar 2026 02:00:21 +0300 Subject: [PATCH 1/3] about issue --- src/borg/testsuite/archiver/transfer_cmd_test.py | 1 + src/borg/upgrade.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/borg/testsuite/archiver/transfer_cmd_test.py b/src/borg/testsuite/archiver/transfer_cmd_test.py index 7255b683bc..57f524de3c 100644 --- a/src/borg/testsuite/archiver/transfer_cmd_test.py +++ b/src/borg/testsuite/archiver/transfer_cmd_test.py @@ -363,6 +363,7 @@ def test_transfer_archive_metadata(archivers, request, monkeypatch): assert dest_archive["hostname"] == source_archive["hostname"] assert dest_archive["username"] == source_archive["username"] assert dest_archive["command_line"] == source_archive["command_line"] + assert dest_archive["cwd"] == source_archive["cwd"] assert dest_archive["duration"] == source_archive["duration"] assert dest_archive["start"] == source_archive["start"] assert dest_archive["end"] == source_archive["end"] diff --git a/src/borg/upgrade.py b/src/borg/upgrade.py index a7b3f00df1..f5b70365bd 100644 --- a/src/borg/upgrade.py +++ b/src/borg/upgrade.py @@ -36,6 +36,7 @@ def upgrade_archive_metadata(self, *, metadata): "comment", "chunker_params", "recreate_command_line", + "cwd", ): if hasattr(metadata, attr): new_metadata[attr] = getattr(metadata, attr) @@ -149,7 +150,7 @@ def upgrade_archive_metadata(self, *, metadata): new_metadata = {} # keep all metadata except archive version and stats. also do not keep # recreate_source_id, recreate_args, recreate_partial_chunks which were used only in 1.1.0b1 .. b2. - for attr in ("hostname", "username", "comment", "chunker_params"): + for attr in ("hostname", "username", "comment", "chunker_params", "cwd"): if hasattr(metadata, attr): new_metadata[attr] = getattr(metadata, attr) rechunking = self.args.chunker_params is not None From 440b7039af84110c1167d91f0a77555a27e44a48 Mon Sep 17 00:00:00 2001 From: ebuzerdrmz44 Date: Wed, 18 Mar 2026 16:02:34 +0300 Subject: [PATCH 2/3] addressing review --- src/borg/archive.py | 2 ++ src/borg/upgrade.py | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/borg/archive.py b/src/borg/archive.py index 6571b0cf63..73e2ea2ff4 100644 --- a/src/borg/archive.py +++ b/src/borg/archive.py @@ -711,6 +711,8 @@ def save(self, name=None, comment=None, timestamp=None, stats=None, additional_m stats = stats or self.stats metadata |= {"size": stats.osize, "nfiles": stats.nfiles} metadata |= additional_metadata or {} + if metadata.get("cwd") is None: + del metadata["cwd"] metadata = ArchiveItem(metadata) data = self.key.pack_metadata(metadata.as_dict()) self.id = self.repo_objs.id_hash(data) diff --git a/src/borg/upgrade.py b/src/borg/upgrade.py index f5b70365bd..2c562b4691 100644 --- a/src/borg/upgrade.py +++ b/src/borg/upgrade.py @@ -36,10 +36,10 @@ def upgrade_archive_metadata(self, *, metadata): "comment", "chunker_params", "recreate_command_line", - "cwd", ): if hasattr(metadata, attr): new_metadata[attr] = getattr(metadata, attr) + new_metadata["cwd"] = getattr(metadata, "cwd", None) # None signals save() to leave cwd unset rechunking = self.args.chunker_params is not None if rechunking: # if we are rechunking while transferring, we take the new chunker_params. @@ -150,9 +150,11 @@ def upgrade_archive_metadata(self, *, metadata): new_metadata = {} # keep all metadata except archive version and stats. also do not keep # recreate_source_id, recreate_args, recreate_partial_chunks which were used only in 1.1.0b1 .. b2. - for attr in ("hostname", "username", "comment", "chunker_params", "cwd"): + for attr in ("hostname", "username", "comment", "chunker_params"): if hasattr(metadata, attr): new_metadata[attr] = getattr(metadata, attr) + # if cwd is None, we want to drop it from metadata, so we set it to None here, and save() will drop it. + new_metadata["cwd"] = getattr(metadata, "cwd", None) rechunking = self.args.chunker_params is not None if rechunking: # if we are rechunking while transferring, we take the new chunker_params. From 6b51f36569538e9ce08b2e269578c749ae81ca28 Mon Sep 17 00:00:00 2001 From: ebuzerdrmz44 Date: Wed, 18 Mar 2026 16:15:30 +0300 Subject: [PATCH 3/3] passing black lint --- src/borg/archive.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/borg/archive.py b/src/borg/archive.py index 73e2ea2ff4..dcc85deef1 100644 --- a/src/borg/archive.py +++ b/src/borg/archive.py @@ -712,7 +712,7 @@ def save(self, name=None, comment=None, timestamp=None, stats=None, additional_m metadata |= {"size": stats.osize, "nfiles": stats.nfiles} metadata |= additional_metadata or {} if metadata.get("cwd") is None: - del metadata["cwd"] + del metadata["cwd"] metadata = ArchiveItem(metadata) data = self.key.pack_metadata(metadata.as_dict()) self.id = self.repo_objs.id_hash(data)