Features
- RPM metadata is now sorted by package name and version information, which slightly improves compression efficiency.
[2274](https://github.com/pulp/pulp_rpm/issues/2274)
- Make `relative_path` optional when uploading a package.
[2440](https://github.com/pulp/pulp_rpm/issues/2440)
- Shows modulemd profiles and description to user.
[2456](https://github.com/pulp/pulp_rpm/issues/2456)
- Support Modulemd obsoletes.
[2570](https://github.com/pulp/pulp_rpm/issues/2570)
- Enabled pulp_rpm to take advantage of "create_repositories" at PulpImport time.
[2585](https://github.com/pulp/pulp_rpm/issues/2585)
- Keep modular metadata in database as a string instead of saving them to the disk.
[2621](https://github.com/pulp/pulp_rpm/issues/2621)
Bugfixes
- Fixed treeinfo processing to handle some very old treeinfo formats.
[2243](https://github.com/pulp/pulp_rpm/issues/2243)
- Update installation dependencies.
[2289](https://github.com/pulp/pulp_rpm/issues/2289)
- The use of skip_types while performing a sync under the mirror_complete sync policy is now disallowed. Previously it would be silently ignored instead.
[2293](https://github.com/pulp/pulp_rpm/issues/2293)
- Substantial improvements to the memory consumption of syncs, with a modest improvement in time required to sync.
[2296](https://github.com/pulp/pulp_rpm/issues/2296)
- Improved error reporting in one scenario where it could be highly confusing.
[2395](https://github.com/pulp/pulp_rpm/issues/2395)
- Added an exception for a case where repository metadata is incorrect in such a way that it should not be "mirrored", and a warning in other cases. If these warnings / errors are encountered, the party which manages the repo should be contacted. If it is a public repo, an issue can be filed in our tracker, and we will follow up with that party following confirmation of the issue.
[2398](https://github.com/pulp/pulp_rpm/issues/2398)
- Made sure that Pulp doesn't publish repos with duplicate NEVRA in some edge case scenarios.
[2407](https://github.com/pulp/pulp_rpm/issues/2407)
- Taught advisory-conflict-resolution to handle just-EVR-differences in incoming advisory's
package-list. This solves the case of repositories that update advisories to always have
the newest versions of RPMs (looking at you, EPEL...).
[2422](https://github.com/pulp/pulp_rpm/issues/2422)
- Fix ULN remote username and password fields which ought to have been write-only and hidden.
[2428](https://github.com/pulp/pulp_rpm/issues/2428)
- Fix the behavior of gpgcheck and repo_gpgcheck options when specified on the repository.
[2430](https://github.com/pulp/pulp_rpm/issues/2430)
- Fixed an issue that could cause orphan cleanup to fail for certain repos.
[2459](https://github.com/pulp/pulp_rpm/issues/2459)
- Fix an issue where package requirements containing an ampersand character in the name might have their data parsed incorrectly, and added a data repair script (pulpcore-manager rpm-datarepair 2460).
[2460](https://github.com/pulp/pulp_rpm/issues/2460)
- Changed the naming of the trim_rpm_changelogs management command to rpm-trim-changelogs to better match with other command names.
[2470](https://github.com/pulp/pulp_rpm/issues/2470)
- Fixed instances of /tmp/ being used instead of the worker's working directory.
[2475](https://github.com/pulp/pulp_rpm/issues/2475)
- Using retain_package_versions (with the required "additive" sync_policy) will now avoid downloading the older packages when synced with download_policy "on_demand", resulting in much faster and more efficient syncs.
[2479](https://github.com/pulp/pulp_rpm/issues/2479)
- Converted RepoMetadataFile.data_type to TextField in order to drop the max_length restriction.
[2501](https://github.com/pulp/pulp_rpm/issues/2501)
- Fixes ACS to not require `name` in bindings.
[2504](https://github.com/pulp/pulp_rpm/issues/2504)
- Fix ACS to update last refreshed time.
[2505](https://github.com/pulp/pulp_rpm/issues/2505)
- Fixed unix timestamps not being parsed correctly for issued and updated dates.
[2528](https://github.com/pulp/pulp_rpm/issues/2528)
- Fix a small FD leak during complete mirror syncs
[2624](https://github.com/pulp/pulp_rpm/issues/2624)
- Fix import/export of Alma linux repositories.
[2648](https://github.com/pulp/pulp_rpm/issues/2648)
- Improved error message for Alternate Content Source refresh when it has insufficient permissions.
[2667](https://github.com/pulp/pulp_rpm/issues/2667)
- Don't raise a fatal error when encountering mostly valid metadata that contains data we don't expect, or data in the wrong places, in situations where it doesn't really matter.
[2686](https://github.com/pulp/pulp_rpm/issues/2686)
- Allow syncing repositories with duplicate NEVRA in mirror_complete mode, but make sure syncing those packages are skipped.
[2691](https://github.com/pulp/pulp_rpm/issues/2691)
- Do not optimize sync if retain-package-versions was set/changed
[2704](https://github.com/pulp/pulp_rpm/issues/2704)
- Fixed a bug were some SLES repos were publishing metadata with missing drpms.
[2705](https://github.com/pulp/pulp_rpm/issues/2705)
- Fixed orphan cleanup error in case Addon(Variant) were pointing to same subrepo.
[2733](https://github.com/pulp/pulp_rpm/issues/2733)
Improved Documentation
- Added documentation steps to remove content.
[2303](https://github.com/pulp/pulp_rpm/issues/2303)
Deprecations and Removals
- sqlite metadata support is being deprecated. See [this discourse thread](https://discourse.pulpproject.org/t/planning-to-remove-a-feature-from-the-rpm-plugin-sqlite-metadata/418) for additional details, or to advocate for the continued support of the feature.
[2457](https://github.com/pulp/pulp_rpm/issues/2457)
Misc
- [2245](https://github.com/pulp/pulp_rpm/issues/2245), [#2276](https://github.com/pulp/pulp_rpm/issues/2276), [#2302](https://github.com/pulp/pulp_rpm/issues/2302), [#2560](https://github.com/pulp/pulp_rpm/issues/2560), [#2565](https://github.com/pulp/pulp_rpm/issues/2565), [#2599](https://github.com/pulp/pulp_rpm/issues/2599), [#2620](https://github.com/pulp/pulp_rpm/issues/2620)
---