|
| 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