You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: Release v4.2.0 with intelligent defaults and performance optimizations
BREAKING CHANGES:
- Enable -Recursive mode by default for automatic nested dependency processing
- Enable -EnableTagSorting by default for intelligent tag temporal sorting
New Features:
- Intelligent tag selection algorithm prioritizing specified "Tag" values during conflicts
- Performance-optimized tag sorting that only runs during API compatibility resolution
- Enhanced repository conflict detection with clear status logging
- Comprehensive debug logging for tag sorting operations and conflict resolution
Performance Improvements:
- On-demand tag date fetching only when conflicts require resolution
- Optimized git operations using efficient `git for-each-ref` instead of multiple calls
- Smart tag date caching during recursive processing
- Reduced unnecessary sorting operations
User Experience Enhancements:
- Zero configuration required - optimal behavior out-of-the-box
- Clear logging when repositories already exist in dictionary
- Enhanced parameter documentation reflecting new defaults
- Simplified mental model for new users
Backward Compatibility:
- All existing configurations work without modification
- Legacy behavior available via `-Recursive:$false -EnableTagSorting:$false`
- Graceful fallback for tag date fetching failures
Documentation Updates:
- Updated README.md with new default behavior examples
- Enhanced API compatibility algorithm descriptions
- Added performance optimization details
- Updated troubleshooting for both legacy and modern modes
- Comprehensive migration guide from v4.1.x to v4.2.0
Technical Changes:
- Optimized Sort-TagsByDate function with context-aware processing
- Enhanced Update-RepositoryDictionary with improved conflict resolution
- Better PowerShell object handling for reliable sorting operations
- Fixed string interpolation issues in datetime logging
Testing: Extensive testing performed in both Strict and Permissive modes
Closed#4
Copy file name to clipboardExpand all lines: CHANGELOG.md
+20-9Lines changed: 20 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,43 +5,54 @@ All notable changes to LsiGitCheckout will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
-
## [4.2.0] - 2025-01-16
8
+
## [4.2.0] - 2025-01-17
9
9
10
10
### Added
11
-
-**Tag Temporal Sorting**: New`-EnableTagSorting` parameter enables automatic chronological tag ordering using actual git tag dates
12
-
- Intelligent tag selection algorithm that prioritizes existing/new "Tag" values when resolving repository conflicts
11
+
-**Default Intelligent Behavior**: Made`-Recursive` and `-EnableTagSorting` enabled by default for optimal out-of-the-box experience
12
+
-**Performance-Optimized Tag Temporal Sorting**: Intelligent tag selection algorithm that prioritizes existing/new "Tag" values when resolving repository conflicts
13
13
-`Get-GitTagDates` function for efficient tag date fetching using `git for-each-ref`
14
14
-`Sort-TagsByDate` function for chronological tag sorting with comprehensive debug logging
15
15
- Enhanced `Get-TagUnion` function with temporal sorting support when tag dates are available
16
16
- Priority-based tag selection: prefers specified "Tag" values over other compatible tags when both are compatible
17
17
- Fallback to chronologically most recent tag when neither existing nor new "Tag" is compatible
18
18
- Comprehensive verbose and debug logging for tag temporal sorting operations
19
19
- Tag date verification and temporal order display in verbose mode
20
-
- Relaxed temporal ordering requirements when `-EnableTagSorting` is enabled
21
20
- Tag date caching in repository dictionary for performance optimization
21
+
- Enhanced repository conflict detection logging with clear status indicators
22
22
23
23
### Changed
24
+
-**BREAKING (Default Behavior)**: `-Recursive` now defaults to `$true` (enabled by default)
25
+
-**BREAKING (Default Behavior)**: `-EnableTagSorting` now defaults to `$true` (enabled by default)
24
26
- Enhanced repository dictionary structure to include `TagDates` field for storing tag date mappings
25
27
- Improved tag selection logic in all API compatibility scenarios (Strict-Strict, Strict-Permissive, Permissive-Permissive, Permissive-Strict)
26
28
- Updated summary report to display tag temporal sorting status and statistics
27
29
- Enhanced union algorithm to use temporal sorting when enabled, falling back to original logic when disabled
28
-
- Improved error handling for tag date parsing and git command failures
30
+
- Optimized tag sorting to only run when needed during API compatibility resolution
31
+
- Improved repository conflict logging to clearly indicate when repositories already exist in dictionary
32
+
- Enhanced error handling for tag date parsing and git command failures
29
33
30
34
### Fixed
31
35
- PowerShell string interpolation issues with datetime formatting in log messages
32
36
- Improved tag sorting object creation using `[PSCustomObject]` for reliable `Sort-Object` operations
33
37
- Enhanced temporal verification logging with proper variable delimiting
34
38
35
39
### Performance
36
-
-Minimal server impact: tag dates fetched only once per repository after initial checkout
40
+
-**Optimized on-demand processing**: Tag dates fetched only when conflicts require resolution during recursive processing
37
41
- Efficient `git for-each-ref` command usage instead of individual `git log` calls per tag
38
42
- Tag date caching eliminates redundant git operations during recursive processing
43
+
- Reduced unnecessary tag date fetching and sorting operations
39
44
40
45
### Backward Compatibility
46
+
-**Behavior Change**: Default behavior now includes recursive processing and intelligent tag sorting
47
+
-**Legacy Support**: Use `-Recursive:$false -EnableTagSorting:$false` to restore v4.1.x behavior
41
48
-**Non-breaking**: All existing configurations work without modification
42
-
-**Default behavior**: `-EnableTagSorting` is disabled by default, maintaining v4.1.x behavior
43
-
-**Opt-in feature**: New functionality only active when explicitly enabled
44
-
- Manual temporal ordering requirements preserved when tag sorting is disabled
49
+
- Manual temporal ordering requirements preserved when tag sorting is explicitly disabled
50
+
51
+
### Migration Notes
52
+
-**Zero configuration upgrade**: Most users get optimal behavior without any parameter changes
53
+
-**Enhanced user experience**: New users get intelligent behavior by default
54
+
-**Optional legacy mode**: Previous behavior available via explicit parameter flags
55
+
-**Performance benefits**: Automatic optimization for complex dependency graphs
Copy file name to clipboardExpand all lines: LsiGitCheckout.ps1
+52-42Lines changed: 52 additions & 42 deletions
Original file line number
Diff line number
Diff line change
@@ -24,26 +24,33 @@
24
24
.PARAMETERVerbose
25
25
Increases verbosity of output messages.
26
26
.PARAMETERRecursive
27
-
Enables recursive dependency discovery and processing.
27
+
Enables recursive dependency discovery and processing. Enabled by default.
28
28
.PARAMETERMaxDepth
29
29
Maximum recursion depth for dependency discovery. Defaults to 5.
30
30
.PARAMETERApiCompatibility
31
31
Default API compatibility mode when not specified in dependencies. Can be 'Strict' or 'Permissive'. Defaults to 'Permissive'.
32
32
.PARAMETEREnableTagSorting
33
-
Enables automatic tag temporal sorting using git tag dates. This removes the requirement for manual temporal ordering in "API Compatible Tags" and suppresses related warnings in Permissive mode.
33
+
Enables automatic tag temporal sorting using git tag dates. This removes the requirement for manual temporal ordering in "API Compatible Tags" and provides intelligent tag selection. Enabled by default.
0 commit comments