Skip to content

Commit 0b14463

Browse files
committed
feat: add flexible API compatibility modes for recursive dependency resolution
Closes #3 - Add "API Compatibility" field to dependencies.json with "Strict" and "Permissive" modes - Add -ApiCompatibility parameter to set default compatibility mode (defaults to "Permissive") - Implement mode-specific tag selection algorithms: - Strict mode: Uses intersection of compatible tags (existing behavior) - Permissive mode: Uses union of compatible tags for flexible version management - Add compatibility mode interaction rules for mixed environments - Track API Compatibility mode in repository dictionary - Display default API Compatibility mode in summary report The implementation preserves temporal ordering in union operations when possible, with warnings for incompatible tag lists that fall back to unordered union. BREAKING CHANGE: Default behavior changes from strict intersection to permissive union. To maintain v4.0.x behavior, use: -ApiCompatibility Strict
1 parent a7eb473 commit 0b14463

File tree

4 files changed

+422
-67
lines changed

4 files changed

+422
-67
lines changed

CHANGELOG.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,39 @@ All notable changes to LsiGitCheckout will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [4.1.1] - 2025-01-16
9+
10+
### Fixed
11+
- Temporal ordering preserved in union operations for Permissive mode
12+
- Union algorithm now maintains the chronological order of tags when constraints are met
13+
14+
### Added
15+
- Warning when tag lists don't start with the same tag (falls back to unordered union)
16+
- Warning when tag lists have same length but different content (falls back to unordered union)
17+
- Debug logging for edge cases in union operations
18+
19+
## [4.1.0] - 2025-01-16
20+
21+
### Added
22+
- "API Compatibility" field in dependencies.json with "Strict" and "Permissive" modes
23+
- `-ApiCompatibility` parameter to set default compatibility mode (defaults to "Permissive")
24+
- Enhanced tag selection algorithm based on compatibility mode:
25+
- **Strict mode**: Uses intersection of compatible tags (existing behavior)
26+
- **Permissive mode**: Uses union of compatible tags for more flexible version management
27+
- Compatibility mode inheritance rules:
28+
- Strict + Strict = Use intersection algorithm
29+
- Strict + Permissive = Keep existing Strict repository unchanged
30+
- Permissive + Permissive = Use union algorithm
31+
- Permissive + Strict = Adopt Strict mode and its tags
32+
33+
### Changed
34+
- Tag selection in Permissive mode now selects the most recent tag from the union of all compatible versions
35+
- Repository dictionary now tracks API Compatibility mode for each repository
36+
- Summary report now displays the default API Compatibility mode
37+
38+
### Fixed
39+
- Improved handling of tag ordering in union operations
40+
841
## [4.0.2] - 2025-01-15
942

1043
### Fixed

0 commit comments

Comments
 (0)