Add Homebrew formula and release checklist - #57
Merged
Conversation
Add `Formula/git-trees.rb` as the source of truth for the Homebrew formula, pinned to the v1.0.2 release tarball with a verified sha256. The formula installs the script as `git-trees` on PATH and stages `AGENTS.md.template` in `pkgshare`, since `TREES_AGENTS_TEMPLATE` defaults to `~/.config/git-trees/AGENTS.md` and a formula must not write into the user's home directory — a `caveats` block explains how to put it in place. Add `docs/RELEASING.md` covering the manual release process: cut and push the tag, hash the new tarball, bump `url` + `sha256`, copy the formula into `brightdigit/homebrew-tap`, and verify with `brew install`. It also records the shell-completions follow-up for v1.0.3 (#51). Add a Homebrew section to the README's `## Install`, noting the formula is not yet published to the tap. This does not push to the tap repo; the formula must be copied there to take effect. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Aug 21, 2026
Merged
Merged
Move the formula under homebrew-tap/ and add a release workflow that updates url/sha256 and git-subrepo pushes to brightdigit/homebrew-tap. Co-authored-by: Cursor <cursoragent@cursor.com>
….git --branch=main homebrew-tap subrepo: subdir: "homebrew-tap" merged: "7043a61" upstream: origin: "https://github.com/brightdigit/homebrew-tap.git" branch: "main" commit: "none" git-subrepo: version: "0.4.9" origin: "https://github.com/Homebrew/brew" commit: "b48c7994b5"
subrepo: subdir: "homebrew-tap" merged: "9c94a73" upstream: origin: "https://github.com/brightdigit/homebrew-tap.git" branch: "main" commit: "9c94a73" git-subrepo: version: "0.4.9" origin: "https://github.com/Homebrew/brew" commit: "b48c7994b5"
workflow_dispatch only registers once the file is on the default branch; a branch push trigger lets us verify the tap write with HOMEBREW_TAP_TOKEN first. Co-authored-by: Cursor <cursoragent@cursor.com>
Pass url/sha256 through ENV into perl so s/// is not split on https://. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #49.
Adds Homebrew packaging support: the formula source-of-truth, the manual release process, and a README install path.
The tap is not touched by this PR
The tap repo
brightdigit/homebrew-tapalready exists, but this PR does not create it, push to it, or modify it.Formula/git-trees.rbhere is the source of truth; Homebrew never reads it from this repo. It takes effect only once it is copied into the tap, which is whatbrew tap brightdigit/tapclones. Until that copy happens,brew install git-treesdoes not work — the README says so explicitly rather than promising an install path that isn't live yet.Once published, the user-facing install is:
The v1.0.2 pin and its verified sha256
The formula pins
https://github.com/brightdigit/git-trees/archive/refs/tags/v1.0.2.tar.gz.The hash was computed from the real tarball, not invented. Verified two ways, and the download was confirmed genuine first (HTTP 200, valid gzip, and the expected file list) so a 404 body couldn't hash cleanly and pass silently:
Formula design notes
depends_on "git". git is a hard dependency of Homebrew itself and formulae conventionally omit it. I agree with this and did not add it.installis justbin.install "git-trees".install.shcopiesAGENTS.md.templateto~/.config/git-trees/AGENTS.md, which is whatTREES_AGENTS_TEMPLATEdefaults to. A formula must not write into the user's home directory, so the template is staged withpkgshare.install "AGENTS.md.template"and acaveatsblock explains both ways to put it in place (copy it, or pointTREES_AGENTS_TEMPLATEat the bundled copy). This is the one behavioral difference frominstall.sh, and it's inherent to packaging rather than a shortcut.test doexercises the real binary:git-trees helpwrites usage to stderr and exits 0, so the test captures2>&1and asserts onusage: git trees.Completions follow-up (#51)
completions/git-trees.bashandcompletions/_git-treesdo not exist in this branch and are not in the v1.0.2 tarball, so a formula referencing them would breakbrew installtoday. They are deliberately not referenced.docs/RELEASING.mdrecords the follow-up: once #51 ships in v1.0.3, the formula gainsbash_completion.install/zsh_completion.installlines, added only in the revision whoseurlpoints at a tag that actually contains them.Release checklist
New
docs/RELEASING.md— a dedicated file rather than a README section, since the process spans tagging, hashing, and a second repo, and is contributor-facing rather than user-facing. There is no release automation; tags are cut by hand, so the checklist is the process. It covers: cut and push the tag, compute the new sha256 (with a note on whycurl -fmatters), bumpurl+sha256together, copy the formula intobrightdigit/homebrew-tap, and verify withbrew install.Brew tooling actually run
All of it ran locally and passed.
brew auditno longer accepts a path (Calling brew audit [path ...] is disabled), so the audit and install were run through a throwaway local tap, which was removed afterward.ruby -c Formula/git-trees.rbSyntax OKbrew style Formula/git-trees.rb1 file inspected, no offenses detectedbrew audit --strict --formula …/git-treesbrew install --build-from-source/opt/homebrew/Cellar/git-trees/1.0.2: 8 files, 51.4KBbrew testgit trees helpvia the installed binaryEnd-to-end proof it works as a real git subcommand after install:
The formula was uninstalled and the scratch tap deleted afterward, leaving the machine clean.
Scope
Packaging and docs only.
git-trees,install.sh, andtests/smoke.share unmodified (git diff --statagainst them is empty). The README edit is a single additive block inserted after the curl path, leaving the surrounding prose untouched so the concurrent## Installedits in #54 and #51 merge cleanly.🤖 Generated with Claude Code
Release coordination (v1.0.3)
One of five PRs into
release-1.0.3(#56 prune, #58 sync, #60 completions, #59 curl install, #57 Homebrew). All five are green on CI (smoke on Linux + macOS).Suggested merge order: #56 → #58 → #60 → #59 → #57. This PR merges cleanly against every other branch.
Ships inert by design. The formula here is the source of truth;
brew installonly works once it is copied intobrightdigit/homebrew-tap.docs/RELEASING.mdcovers that step.Follow-up for v1.0.3: the formula pins the v1.0.2 tarball and deliberately omits the completions from #60 — those files are not in that tarball, so referencing them would break
brew installtoday. Once v1.0.3 is tagged, bumpurl/sha256and add thebash_completion.install/zsh_completion.installlines per the checklist.Note: CodeRabbit skipped all five — "reviews are disabled for this base branch." These have not had automated review; that would come when
release-1.0.3merges tomain.The CHANGELOG is deliberately excluded from every PR — it needs the merged PR URLs, so it lands as one commit on
release-1.0.3before taggingv1.0.3.