@@ -822,9 +822,13 @@ def get_delegations_filenames(metadata_directory, consistent_snapshot,
822
822
"""
823
823
824
824
filenames = {}
825
- loaded_metadata = []
826
825
metadata_files = sorted (storage_backend .list_folder (metadata_directory ),
827
826
reverse = True )
827
+
828
+ # Iterate over role metadata files, sorted by their version-number prefix, with
829
+ # more recent versions first, and only add the most recent version of any
830
+ # (non top-level) metadata to the list of returned filenames. Note that there
831
+ # should only be one version of each file, if consistent_snapshot is False.
828
832
for metadata_role in metadata_files :
829
833
metadata_path = os .path .join (metadata_directory , metadata_role )
830
834
@@ -845,20 +849,13 @@ def get_delegations_filenames(metadata_directory, consistent_snapshot,
845
849
' extension: ' + repr (metadata_path ))
846
850
continue
847
851
848
- # Skip top-level roles, only interested in delegated roles now that the
849
- # top-level roles have already been loaded.
852
+ # Skip top-level roles, only interested in delegated roles.
850
853
if metadata_name in ['root' , 'snapshot' , 'targets' , 'timestamp' ]:
851
854
continue
852
855
853
- # Keep a store of metadata previously loaded metadata to prevent re-loading
854
- # duplicate versions. Duplicate versions may occur with
855
- # 'consistent_snapshot', where the same metadata may be available in
856
- # multiples files (the different hash is included in each filename).
857
- if metadata_name in loaded_metadata :
858
- continue
859
-
860
- filenames [metadata_name ] = metadata_path
861
- loaded_metadata .append (metadata_name )
856
+ # Prevent reloading duplicate versions if consistent_snapshot is True
857
+ if metadata_name not in filenames :
858
+ filenames [metadata_name ] = metadata_path
862
859
863
860
return filenames
864
861
0 commit comments