|
3 | 3 |
|
4 | 4 | """Repository Abstraction for metadata management""" |
5 | 5 |
|
| 6 | +from copy import deepcopy |
6 | 7 | import logging |
7 | 8 | from abc import ABC, abstractmethod |
8 | 9 | from contextlib import contextmanager, suppress |
@@ -114,15 +115,15 @@ def snapshot(self, force: bool = False) -> Tuple[bool, Dict[str, MetaFile]]: |
114 | 115 | for keyname, new_meta in self.targets_infos.items(): |
115 | 116 | if keyname not in snapshot.meta: |
116 | 117 | update_version = True |
117 | | - snapshot.meta[keyname] = new_meta |
| 118 | + snapshot.meta[keyname] = deepcopy(new_meta) |
118 | 119 | continue |
119 | 120 |
|
120 | 121 | old_meta = snapshot.meta[keyname] |
121 | 122 | if new_meta.version < old_meta.version: |
122 | 123 | raise ValueError(f"{keyname} version rollback") |
123 | 124 | if new_meta.version > old_meta.version: |
124 | 125 | update_version = True |
125 | | - snapshot.meta[keyname] = new_meta |
| 126 | + snapshot.meta[keyname] = deepcopy(new_meta) |
126 | 127 | removed[keyname] = old_meta |
127 | 128 |
|
128 | 129 | if not update_version: |
@@ -156,7 +157,7 @@ def timestamp(self, force: bool = False) -> Tuple[bool, Optional[MetaFile]]: |
156 | 157 | if self.snapshot_info.version > timestamp.snapshot_meta.version: |
157 | 158 | update_version = True |
158 | 159 | removed = timestamp.snapshot_meta |
159 | | - timestamp.snapshot_meta = self.snapshot_info |
| 160 | + timestamp.snapshot_meta = deepcopy(self.snapshot_info) |
160 | 161 |
|
161 | 162 | if not update_version: |
162 | 163 | raise AbortEdit("Skip timestamp: No snapshot version changes") |
|
0 commit comments