Skip to content

Commit b88a4b0

Browse files
AndreaV-Lsiclaude
andcommitted
chore: Prepare module for PowerShell Gallery publishing
- RepoHerd.psd1: real GUID, enriched description, 13 tags for discoverability, LicenseUri, ReleaseNotes for v9.0.0 - README.md: added Install-Module section under Installation - docs/drafts/reddit-hn-posts.md: draft posts for r/PowerShell, r/devops, and Show HN Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 946f48d commit b88a4b0

3 files changed

Lines changed: 88 additions & 4 deletions

File tree

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,14 @@ RepoHerd resolves recursive dependencies across repository trees, supports both
160160

161161
## Installation
162162

163+
### From PowerShell Gallery (recommended)
164+
165+
```powershell
166+
Install-Module -Name RepoHerd
167+
```
168+
169+
### Manual download
170+
163171
1. Download `RepoHerd.ps1`, `RepoHerd.psm1`, and `RepoHerd.psd1` to the same directory
164172
2. Create `dependencies.json` with your repository configuration
165173
3. Create `git_credentials.json` with your SSH key mappings (if using SSH repositories)

RepoHerd.psd1

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
# Module manifest for RepoHerd
33
RootModule = 'RepoHerd.psm1'
44
ModuleVersion = '9.0.0'
5-
GUID = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
5+
GUID = '55dbb622-24f8-4f70-b16e-5412d436f94f'
66
Author = 'LS Instruments AG'
77
CompanyName = 'LS Instruments AG'
88
Copyright = '(c) LS Instruments AG. All rights reserved.'
9-
Description = 'PowerShell-based dependency management tool that checks out multiple Git repositories to specified versions.'
9+
Description = 'Multi-repository Git dependency manager with SemVer version resolution, recursive dependency discovery, and cross-platform SSH support. Clone and checkout multiple Git repositories to pinned versions from a single JSON config. An alternative to git submodules for managing shared libraries across repos.'
1010
PowerShellVersion = '7.6'
1111

1212
FunctionsToExport = @(
@@ -56,8 +56,10 @@
5656

5757
PrivateData = @{
5858
PSData = @{
59-
Tags = @('Git', 'Dependency', 'SemVer', 'Checkout')
60-
ProjectUri = 'https://github.com/LS-Instruments/RepoHerd'
59+
Tags = @('Git', 'Dependency', 'SemVer', 'Checkout', 'MultiRepo', 'DevOps', 'Automation', 'SSH', 'CrossPlatform', 'DependencyManagement', 'VersionPinning', 'Repository', 'Submodules')
60+
LicenseUri = 'https://github.com/LS-Instruments/RepoHerd/blob/main/LICENSE'
61+
ProjectUri = 'https://github.com/LS-Instruments/RepoHerd'
62+
ReleaseNotes = 'v9.0.0: Project renamed from LsiGitCheckout to RepoHerd. Breaking: module, entry point, and initialization function renamed. Added GitHub Pages landing page with SEO.'
6163
}
6264
}
6365
}

docs/drafts/reddit-hn-posts.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Draft Posts for Reddit and Hacker News
2+
3+
These are starting points for you to edit. Adjust tone, add personal anecdotes, remove what doesn't fit.
4+
5+
---
6+
7+
## r/PowerShell
8+
9+
**Title:** I built RepoHerd — a PowerShell tool for managing multi-repo Git dependencies with SemVer resolution
10+
11+
**Body:**
12+
13+
At work we manage a handful of shared libraries across multiple Git repositories. We used to manually check out the right tags before each build, which was error-prone and tedious — especially when repos had their own nested dependencies.
14+
15+
I built RepoHerd to solve this. You define your dependencies in a JSON file with version constraints, and it clones/checks out everything to the right versions automatically.
16+
17+
What it does:
18+
19+
- **SemVer version resolution** with floating versions (`2.1.*`, `3.*`) — picks the latest compatible tag
20+
- **Recursive dependency discovery** — walks nested `dependencies.json` files across repos, detects conflicts
21+
- **Cross-platform SSH** — PuTTY/Pageant on Windows, OpenSSH on macOS/Linux, configured per-host via a credentials file
22+
- **Structured JSON output** for CI/CD integration (`-OutputFile result.json`)
23+
- **Post-checkout scripts** — run PowerShell scripts after successful checkouts
24+
- **Dry run mode** — preview everything before executing
25+
26+
It's written in PowerShell 7.6 LTS, BSD-3-Clause licensed, and has 65 unit + 18 integration tests.
27+
28+
GitHub: https://github.com/LS-Instruments/RepoHerd
29+
30+
Happy to answer questions or hear feedback.
31+
32+
---
33+
34+
## r/devops
35+
36+
**Title:** RepoHerd — open-source alternative to git submodules for multi-repo dependency management (PowerShell, cross-platform)
37+
38+
**Body:**
39+
40+
We hit the limits of git submodules managing shared libraries across ~10 repositories. Detached HEAD pain, no version resolution, submodule-of-submodule nightmares. Monorepo wasn't an option for us.
41+
42+
So I built RepoHerd — a PowerShell-based tool that reads a JSON config and clones/checks out repos to pinned versions with proper dependency resolution.
43+
44+
Why it might be useful:
45+
46+
- **SemVer-aware**: define version constraints like `"2.1.*"` and it picks the latest compatible tag from the remote
47+
- **Recursive**: repos can have their own `dependencies.json` — RepoHerd walks the tree, detects version conflicts across the graph
48+
- **CI/CD friendly**: `-OutputFile result.json` gives structured JSON with per-repo status, dependency chains, errors. `-DryRun` for previewing
49+
- **Cross-platform SSH**: PuTTY on Windows, OpenSSH on macOS/Linux — credentials in a separate file, not baked into the config
50+
- **Post-checkout hooks**: run scripts after checkout for additional build steps
51+
52+
It's not trying to replace a full build system — it just handles the "get these repos at these versions" step reliably.
53+
54+
PowerShell 7.6 LTS, BSD-3-Clause, 83 automated tests.
55+
56+
GitHub: https://github.com/LS-Instruments/RepoHerd
57+
58+
---
59+
60+
## Show HN
61+
62+
**Title:** Show HN: RepoHerd – Multi-repo Git dependency manager with SemVer resolution
63+
64+
**Body (HN text field):**
65+
66+
RepoHerd is a cross-platform PowerShell tool that clones and checks out multiple Git repositories to pinned versions from a single JSON config.
67+
68+
It solves the problem of managing shared libraries across multiple repos without git submodules. You define version constraints (exact or floating like "2.1.*"), and it resolves the dependency graph recursively, detecting conflicts.
69+
70+
Features: SemVer floating versions, recursive dependency discovery, cross-platform SSH (PuTTY on Windows, OpenSSH on macOS/Linux), structured JSON output for CI/CD, post-checkout scripts.
71+
72+
PowerShell 7.6 LTS, BSD-3-Clause. 65 unit tests + 18 integration tests.
73+
74+
https://github.com/LS-Instruments/RepoHerd

0 commit comments

Comments
 (0)