Skip to content

Commit a7eb473

Browse files
committed
feat: Add recursive dependency resolution with API compatibility checking (v4.0.2)
Closes #2 BREAKING CHANGE: While the script remains backward compatible in non-recursive mode, the recursive mode introduces new behavior for dependency management. Major features: - Add -Recursive flag for automatic nested dependency discovery and processing - Implement API compatibility checking with temporal version ordering - Add intelligent version selection from compatible tag intersections - Add -MaxDepth parameter to control recursion depth (default: 5) - Implement path conflict detection for duplicate repositories Improvements: - Enhanced error messages for missing tags with proper stderr capture - Automatic cleanup of failed clones to prevent undefined states - Skip dependency processing for repositories that fail to checkout - Add CheckoutFailed tracking in repository dictionary - Improve debug logging with JSON content display Fixes: - Fix PowerShell HashSet compatibility across different PS versions - Fix path resolution for complex relative paths with ".." segments - Fix git error capture using & operator instead of Invoke-Expression - Prevent orphaned repositories when tag checkout fails The script now supports advanced dependency management scenarios while maintaining full backward compatibility with existing non-recursive configurations. Tested scenarios: - Missing tag error handling - API compatibility with overlapping and non-overlapping version lists - Path conflict detection - Failed repository cleanup and recovery - Dirty state restoration - Non-recursive mode compatibility
1 parent 5784b77 commit a7eb473

File tree

4 files changed

+903
-167
lines changed

4 files changed

+903
-167
lines changed

CHANGELOG.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,49 @@ 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.0.2] - 2025-01-15
9+
10+
### Fixed
11+
- Git checkout error capture now properly displays stderr messages for missing tags
12+
- Improved error reporting clarity when tags don't exist in repositories
13+
14+
### Changed
15+
- Switched from `Invoke-Expression` to `&` operator for more reliable error capture
16+
17+
## [4.0.1] - 2025-01-15
18+
19+
### Added
20+
- Cleanup of failed clones to prevent repositories in undefined states
21+
- CheckoutFailed tracking to skip dependency processing for failed repositories
22+
23+
### Fixed
24+
- Error handling for missing tags now provides detailed error messages
25+
- Repositories that fail to checkout no longer have their dependencies processed
26+
27+
### Changed
28+
- Enhanced error message capture and display for all git operations
29+
30+
## [4.0.0] - 2025-01-15
31+
32+
### Added
33+
- Recursive dependency discovery and processing with `-Recursive` flag
34+
- API compatibility checking for shared dependencies
35+
- "API Compatible Tags" field for version compatibility management
36+
- Automatic version selection (most recent compatible version)
37+
- Path conflict detection for duplicate repositories
38+
- `-MaxDepth` parameter to control recursion depth (default: 5)
39+
- JSON dependency file content logging in debug mode
40+
- Dynamic tag checkout when newer compatible version is found
41+
42+
### Changed
43+
- Improved path normalization to resolve relative paths correctly
44+
- Enhanced debug logging for better troubleshooting
45+
- Repository dictionary tracks all discovered repositories
46+
47+
### Fixed
48+
- PowerShell HashSet compatibility issues across different versions
49+
- Path resolution for nested relative paths with ".." segments
50+
851
## [3.0.0] - 2025-01-14
952

1053
### Changed

0 commit comments

Comments
 (0)