Bagit spec 1.0 introduces some significant changes from 0.97, most notably the restriction that if multiple checksum types are used, every payload file must be listed in every checksum manifest. This makes creating bags that contain references to remote files with mixed checksum types impossible if bdbag was to only support bagit spec 1.0 moving forward.
For example, when creating bags using a remote-file-manifest, for legacy reasons only an MD5 might be available for a subset of files, whereas others may have newer SHA256 or SHA512 hashes. Creating bags with this type of mixed checksum content is actually a pretty common use case, and one that was supported prior to bdbag release 1.3.0. This issue is described in further detail in #26.
The change proposed here is to create a bdbag.json configuration (and API object) parameter which allows the user to specify the bagit specification conformance level. Specifying 0.97 will allow for the less restrictive payload manifest declarations and specifying 1.0 will enforce strict payload manifest homogeneity. The system will default to 0.97 for backward compatibility. This mechanism will also provide a way to address additional compatibility issues in the future, should they arise.
Bagit spec
1.0introduces some significant changes from0.97, most notably the restriction that if multiple checksum types are used, every payload file must be listed in every checksum manifest. This makes creating bags that contain references to remote files with mixed checksum types impossible ifbdbagwas to only supportbagitspec1.0moving forward.For example, when creating bags using a
remote-file-manifest, for legacy reasons only an MD5 might be available for a subset of files, whereas others may have newer SHA256 or SHA512 hashes. Creating bags with this type of mixed checksum content is actually a pretty common use case, and one that was supported prior tobdbagrelease 1.3.0. This issue is described in further detail in #26.The change proposed here is to create a
bdbag.jsonconfiguration (and API object) parameter which allows the user to specify thebagitspecification conformance level. Specifying0.97will allow for the less restrictive payload manifest declarations and specifying1.0will enforce strict payload manifest homogeneity. The system will default to0.97for backward compatibility. This mechanism will also provide a way to address additional compatibility issues in the future, should they arise.