Multi-Repository Git Dependency Manager
A PowerShell tool that checks out multiple Git repositories to specified versions with recursive dependency resolution, SemVer support, cross-platform SSH, and API compatibility checking.
pwsh ./LsiGitCheckout.ps1 -InputFile dependencies.json
Features
SemVer Dependency Resolution
Automatic version resolution with floating version patterns (x.y.*, x.*). Cross-major version conflicts are rejected by convention.
Recursive Dependencies
Walk dependency trees with configurable max depth, conflict detection, and API compatibility checking in Strict or Permissive mode.
Cross-Platform SSH
PuTTY/Pageant on Windows, OpenSSH on macOS/Linux. Same credential file format, platform-appropriate transport. Handles HTTPS repos with SSH submodules.
Structured JSON Output
Machine-readable results via -OutputFile with per-repo status, requestedBy parent chain, and post-checkout script tracking.
Post-Checkout Scripts
Execute PowerShell scripts after successful checkouts for integration with external build systems and dependency managers.
Automated Testing
65 unit tests and 18 integration tests with Pester 5.x. Full coverage of SemVer parsing, version compatibility, and all test configurations.
Supported Platforms
| Component | Windows | macOS | Linux |
|---|---|---|---|
| PowerShell | 7.6 LTS (side-by-side with 5.1) | 7.6 LTS | 7.6 LTS |
| SSH Transport | PuTTY/plink + Pageant (.ppk) | OpenSSH (bundled) | OpenSSH (bundled) |
| HTTPS Auth | Git Credential Manager | Git Credential Manager | GCM or PAT |
| Git LFS | Optional | Optional | Optional |
Quick Start
Create a dependency file
Define your repositories, versions, and resolution mode in a JSON configuration file.
Configure SSH credentials
Map hostnames to SSH key paths in git_credentials.json. Supports both PuTTY and OpenSSH key formats.
Run the checkout
Execute pwsh ./LsiGitCheckout.ps1 -InputFile dependencies.json and all repositories are cloned, checked out to the right version, with submodules initialized.