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
A PowerShell script for managing multiple Git repositories with support for tags, SSH authentication via PuTTY, Git LFS, and submodules. Features advanced recursive dependency resolution with API compatibility checking, Semantic Versioning (SemVer) support, flexible compatibility modes, intelligent automatic tag temporal sorting, custom dependency file configurations, and post-checkout PowerShell script execution for integration with external dependency management systems.
3
+
A PowerShell script for managing multiple Git repositories with support for tags, SSH authentication via PuTTY, Git LFS, and submodules. Features advanced recursive dependency resolution with API compatibility checking, Semantic Versioning (SemVer) support with floating versions, flexible compatibility modes, intelligent automatic tag temporal sorting, custom dependency file configurations, and post-checkout PowerShell script execution for integration with external dependency management systems.
4
4
5
5
## Table of Contents
6
6
@@ -35,6 +35,7 @@ A PowerShell script for managing multiple Git repositories with support for tags
35
35
-**Dry Run Mode**: Preview operations without making changes
36
36
-**Recursive Dependencies**: Discover and process nested repository dependencies with API compatibility checking
37
37
-**Dependency Resolution Modes**: Choose between Agnostic (tag-based) and SemVer (Semantic Versioning) resolution
38
+
-**Floating Versions**: Support for SemVer floating version patterns (x.y.*, x.*) for automatic latest version selection
38
39
-**Flexible Compatibility Modes**: Choose between Strict and Permissive API compatibility modes
39
40
-**Intelligent Tag Temporal Sorting**: Always-on automatic chronological tag ordering using actual git tag dates with optimized performance
40
41
-**Custom Dependency Files**: Per-repository custom dependency file paths and names with proper isolation
@@ -161,7 +162,7 @@ Contains repository configurations without any credential information:
161
162
-**API Compatible Tags** (optional, Agnostic mode): List of API-compatible tags (can be in any order - automatic chronological sorting)
162
163
-**API Compatibility** (optional): "Strict" or "Permissive" (defaults to script parameter when absent)
163
164
-**Dependency Resolution** (optional): "Agnostic" (default) or "SemVer" - see [Dependency Resolution Modes](#dependency-resolution-modes)
164
-
-**Version** (required for SemVer mode): Semantic version requirement (e.g., "2.1.0")
165
+
-**Version** (required for SemVer mode): Semantic version requirement (e.g., "2.1.0", "2.1.*", "2.*")
165
166
-**Version Regex** (optional, SemVer mode): Custom regex pattern for version extraction from tags
166
167
-**Skip LFS** (optional): Skip Git LFS downloads for this repository and all submodules
167
168
-**Dependency File Path** (optional): Custom subdirectory within repository for dependency file
@@ -289,7 +290,7 @@ At this point, the script must determine:
289
290
LsiGitCheckout provides two powerful approaches to solve this challenge:
2.**SemVer Mode**: Automatically resolves compatible versions based on Semantic Versioning 2.0.0 rules
293
+
2.**SemVer Mode**: Automatically resolves compatible versions based on Semantic Versioning 2.0.0 rules with floating version support
293
294
294
295
Both modes use sophisticated conflict resolution algorithms that consider the compatibility requirements of all callers and select the optimal version that satisfies everyone's needs.
295
296
@@ -301,7 +302,8 @@ Each mode offers distinct advantages and is suited for different scenarios:
301
302
-**Zero maintenance overhead**: Compatible updates require no configuration changes
302
303
-**Automatic conflict detection**: Clear error messages when version requirements conflict
303
304
-**Immediate availability**: Entire dependency tree benefits from compatible updates as soon as they're released
304
-
-**Simplified configuration**: Only need to specify minimum version requirements
305
+
-**Simplified configuration**: Only need to specify minimum version requirements or floating patterns
306
+
-**Floating versions**: Automatically select latest compatible versions using patterns like `2.1.*` or `2.*`
@@ -315,6 +317,7 @@ Each mode offers distinct advantages and is suited for different scenarios:
315
317
- You want to minimize configuration maintenance overhead
316
318
- Your team understands and follows SemVer 2.0.0 principles
317
319
- You prefer automatic compatibility resolution with clear, predictable rules
320
+
- You want to leverage floating versions for automatic latest version selection
318
321
- You're starting a new project or can enforce semantic versioning discipline
319
322
320
323
#### When to Choose Agnostic Mode
@@ -353,15 +356,18 @@ The traditional tag-based resolution using exact tags and explicit API Compatibl
353
356
354
357
### SemVer Mode
355
358
356
-
Automatic version resolution based on Semantic Versioning 2.0.0 rules. This mode eliminates the need to maintain explicit compatibility lists by leveraging semantic versioning conventions.
359
+
Automatic version resolution based on Semantic Versioning 2.0.0 rules. This mode eliminates the need to maintain explicit compatibility lists by leveraging semantic versioning conventions and supports floating version patterns for automatic latest version selection.
357
360
358
361
**Key Features:**
359
362
- Automatic compatibility resolution using SemVer rules
363
+
- Floating version patterns for automatic latest version selection
360
364
- Support for custom version tag patterns
361
365
- Intelligent conflict detection and reporting
362
-
-Lowest compatible version selection for stability
0 commit comments