Skip to content

Commit 0df71cc

Browse files
chtnnhcursoragent
andcommitted
Refresh README and user guide for 1.2.0.
Document Homebrew upgrade and PATH shadowing, --show-path, directory include/exclude, and related cookbook/quickstart examples. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 685bc19 commit 0df71cc

10 files changed

Lines changed: 142 additions & 41 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Changed
11+
- README and user guide refreshed for 1.2.0 (Homebrew upgrade / PATH shadowing, `--show-path`, directory `--in`/`--exclude`)
12+
1013
### Planned
1114
- `gg doctor --config` — warn on stale binary vs latest, empty `auto_enroll`, missing group members, duplicate basenames
1215
- `--cwd` / default `--root .` when no config root for “just this folder” workflows

CONTRIBUTING.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ Line coverage must stay **≥ 95%** (enforced in CI via `./scripts/ci.sh` / `./s
3131
- Prefer small, focused PRs aligned with the version roadmap in the README / docs.
3232
- Passthrough must shell out to `git` on `PATH` — do not reimplement porcelain.
3333
- Add/extend tests under `tests/` for CLI behavior.
34-
- Update `CHANGELOG.md` for user-visible changes.
34+
- Update `CHANGELOG.md` **and** user-facing docs (`README.md`, `docs/src/…`) for user-visible changes.
3535
- Keep reserved builtin names documented when adding commands.
36+
- Preview the book with `mdbook serve docs --open` when editing guide pages.
3637

3738
## Commit style
3839

README.md

Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
**Run git across all child repositories — fast.**
44

5-
Docs: **https://gg.chtnnhfoundation.org/**
5+
Current release: **1.2.0** · Docs: **https://gg.chtnnhfoundation.org/**
66

77
`gg` discovers git repos under a directory and runs git commands (or built-in insights) in parallel. One CLI for multi-checkout workspaces, client folders, and polyrepos.
88

@@ -19,46 +19,57 @@ gg --only-dirty pull
1919
# target an alias or group
2020
gg -g work fetch --all
2121

22+
# show paths next to repo names (also: show_path = true in config)
23+
gg --show-path ov
24+
2225
# top commits across selection
2326
gg commits -n 10
2427
```
2528

2629
## Install
2730

28-
### From source
31+
### Homebrew (tap)
2932

3033
```bash
31-
cargo install --path . --locked
32-
# binary: gg
34+
brew tap chtnnh/tap # first time; may need: brew trust chtnnh/tap
35+
brew install git-gist
36+
# or: brew install chtnnh/tap/git-gist
37+
38+
brew update && brew upgrade git-gist # later releases
3339
```
3440

35-
### Homebrew (tap)
41+
If `gg version` still looks old after upgrading, Homebrew’s `gg` may be shadowed by `~/.cargo/bin/gg`. Check with `which -a gg`, or use `/opt/homebrew/opt/git-gist/bin/gg` (Apple Silicon) / `/usr/local/opt/git-gist/bin/gg` (Intel).
42+
43+
### cargo-dist shell / PowerShell installer
3644

3745
```bash
38-
brew install chtnnh/tap/git-gist
46+
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/chtnnh/git-gist/releases/latest/download/git-gist-installer.sh | sh
3947
```
4048

41-
### Debian / RPM
49+
Windows (PowerShell):
4250

43-
Download `.deb` / `.rpm` from [GitHub Releases](https://github.com/chtnnh/git-gist/releases), or build with `cargo deb` / `cargo generate-rpm` (see [packaging/README.md](packaging/README.md)).
51+
```powershell
52+
irm https://github.com/chtnnh/git-gist/releases/latest/download/git-gist-installer.ps1 | iex
53+
```
4454

45-
### Nix
55+
### From crates.io / source
4656

4757
```bash
48-
nix run github:chtnnh/git-gist -- version
49-
nix profile install github:chtnnh/git-gist
58+
cargo install git-gist --locked
59+
# or from this repo:
60+
cargo install --path . --locked
61+
# binary: gg
5062
```
5163

52-
### cargo-dist shell / PowerShell installer
64+
### Debian / RPM
5365

54-
```bash
55-
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/chtnnh/git-gist/releases/latest/download/git-gist-installer.sh | sh
56-
```
66+
Download `.deb` / `.rpm` from [GitHub Releases](https://github.com/chtnnh/git-gist/releases), or build with `cargo deb` / `cargo generate-rpm` (see [packaging/README.md](packaging/README.md)).
5767

58-
Windows (PowerShell):
68+
### Nix
5969

60-
```powershell
61-
irm https://github.com/chtnnh/git-gist/releases/latest/download/git-gist-installer.ps1 | iex
70+
```bash
71+
nix run github:chtnnh/git-gist -- version
72+
nix profile install github:chtnnh/git-gist
6273
```
6374

6475
Operator guide for brew/deb/rpm/nix: [packaging/README.md](packaging/README.md).
@@ -108,14 +119,16 @@ Anything else is passed through to `git` in each selected repo. Escape hatch: `g
108119

109120
## Configuration
110121

111-
- Global: `~/.config/git-gist/config.toml`
122+
- Global: `~/.config/git-gist/config.toml` (macOS: `~/Library/Application Support/git-gist/config.toml`)
112123
- Local: `.gg.toml` or `.git-gist.toml` (walks up from cwd)
113124
- Ignore globs: config `ignore` + `.ggignore`
114125

115126
```toml
116127
schema_version = 1
117128
depth = 6
118129
jobs = 8
130+
theme = "vivid"
131+
show_path = false # or true / use --show-path
119132
ignore = ["**/node_modules/**", "**/target/**"]
120133

121134
[aliases]
@@ -144,13 +157,24 @@ tags = ["learning"]
144157
- `--root`, `--in` / `-i`, `--exclude` / `-x`, `-g <group>`, `--tag`, `--depth`
145158
- `-j` jobs, `--fail-fast`, `--dry-run`, `--timing`, `-q` / `--quiet`
146159
- `--only-dirty`, `--only-clean`, `--only-ahead`, `--only-behind`, …
147-
- `--format human|json|ndjson`, `--color auto|always|never`, `--theme`
160+
- `--format human|json|ndjson`, `--color auto|always|never`, `--theme`, `--show-path`
161+
162+
Selection notes:
163+
164+
- `--root` does not pull in aliases **outside** that tree (use `-i`).
165+
- `--depth` also applies to under-root aliases.
166+
- An existing **directory** for `-i` / `-x` includes or excludes all selected repos under that prefix.
167+
- Selection flags apply to reporting and multi-repo commands (`ov`, `list`, `sync`, `each`, passthrough, …). Catalog/config commands (`alias`, `group`, `config`, `hooks list`, …) ignore them.
168+
- Put global flags **before** external git verbs (`gg --dry-run status`). Misplaced globals after the verb error with a hint.
169+
170+
## What’s new in 1.2.0
171+
172+
- Faster status probes and `--only-*` filters (fewer git process spawns)
173+
- `show_path` / `--show-path` for human tables
174+
- Directory prefix `--in` / `--exclude`, depth-aware under-root aliases
175+
- Clearer errors when globals land after a passthrough verb
148176

149-
Selection flags (`--root`, `--in`, `--only-*`, …) apply to reporting and multi-repo
150-
commands (`ov`, `list`, `sync`, `each`, passthrough, …). Catalog/config commands
151-
(`alias`, `group`, `config`, `hooks list`, …) ignore them. Put global flags
152-
**before** external git verbs (`gg --dry-run status`), since trailing flags after
153-
passthrough go to git.
177+
Full notes: [CHANGELOG.md](CHANGELOG.md).
154178

155179
## Documentation
156180

docs/src/commands.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ See `gg --help` and per-command `--help` for the full flag list.
66

77
| Command | Alias | Purpose |
88
|---------|-------|---------|
9-
| `overview` | `ov` | Dashboard: branch, dirty/clean, ahead/behind, age, in-progress (semantic colors) |
10-
| `list` | `ls` | Discovered / selected repos (`--refresh` bypasses cache) |
9+
| `overview` | `ov` | Dashboard: branch, dirty/clean, ahead/behind, age, in-progress (semantic colors; `--show-path` adds path to the repo column) |
10+
| `list` | `ls` | Discovered / selected repos (`--refresh` bypasses cache; always prints name + path) |
1111
| `info [PATH]` | | Detailed status; optional path still respects `--only-*` / `--in` when those are set |
1212
| `commits -n N` | | Top-N commits across selection |
1313
| `worktrees` | | Worktree listing |
@@ -55,6 +55,6 @@ gg pull --rebase
5555
gg git -- status # escape hatch when a name collides with a builtin
5656
```
5757

58-
Put global flags **before** the git verb: `gg --dry-run status` (not `gg status --dry-run`).
58+
Put global flags **before** the git verb: `gg --dry-run status` (not `gg status --dry-run`). If a common global flag appears after the verb, `gg` errors with a hint instead of forwarding it to git.
5959

6060
Exit code is non-zero if any selected repo fails (unless the selection is empty).

docs/src/cookbook.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,32 @@
66
gg ov --root .
77
```
88

9+
## Show paths in human tables
10+
11+
```bash
12+
gg --show-path ov
13+
gg --show-path -g work stale --days 90
14+
15+
# persist
16+
gg config set show_path true
17+
```
18+
919
## Update all dirty work repos
1020

1121
```bash
1222
gg -g work --only-dirty pull --ff-only
1323
```
1424

25+
## Drop or include an entire directory tree
26+
27+
```bash
28+
# exclude every selected repo under foundation/
29+
gg -g oss --exclude ~/code/oss/foundation list
30+
31+
# only repos under that directory
32+
gg --root ~/code --in ~/code/oss/foundation list
33+
```
34+
1535
## Enroll new learning / OSS checkouts
1636

1737
```toml
@@ -66,3 +86,12 @@ gg --dry-run init --profile default ./scratch
6686
```bash
6787
gg --dry-run --timing status -sb
6888
```
89+
90+
## Upgrade Homebrew when PATH has a Cargo `gg`
91+
92+
```bash
93+
brew update && brew upgrade git-gist
94+
which -a gg
95+
# If ~/.cargo/bin/gg wins, either reorder PATH or:
96+
# cargo uninstall git-gist
97+
```

docs/src/install.md

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,39 @@
11
# Install
22

3-
## Cargo (crates.io / git)
4-
5-
```bash
6-
cargo install git-gist --locked
7-
# or from this repo:
8-
cargo install --git https://github.com/chtnnh/git-gist --locked
9-
cargo install --path . --locked
10-
```
11-
123
## Homebrew
134

145
```bash
15-
brew tap chtnnh/tap
6+
brew tap chtnnh/tap # first time
167
brew install git-gist
178
# or: brew install chtnnh/tap/git-gist
189
```
1910

2011
Requires [`chtnnh/homebrew-tap`](https://github.com/chtnnh/homebrew-tap). On Homebrew 6+, you may need `brew trust chtnnh/tap` once.
2112

13+
Upgrade later:
14+
15+
```bash
16+
brew update && brew upgrade git-gist
17+
gg version
18+
```
19+
20+
If `gg version` still shows an older build after upgrading, another `gg` may be earlier on your `PATH` (often `~/.cargo/bin/gg` from `cargo install`). Check with:
21+
22+
```bash
23+
which -a gg
24+
```
25+
26+
Prefer the Homebrew binary, reorder `PATH`, or `cargo uninstall git-gist` if you no longer need the Cargo install.
27+
28+
## Cargo (crates.io / git)
29+
30+
```bash
31+
cargo install git-gist --locked
32+
# or from this repo:
33+
cargo install --git https://github.com/chtnnh/git-gist --locked
34+
cargo install --path . --locked
35+
```
36+
2237
## Nix
2338

2439
```bash

docs/src/introduction.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ Design pillars:
1313

1414
## What’s in 1.2.0
1515

16-
- Faster status probes and `--only-*` filters (fewer git spawns; see `benches/PROBE_PERF.md`)
16+
- Faster status probes and `--only-*` filters (fewer git spawns; maintainers: `benches/PROBE_PERF.md`)
1717
- `show_path` / `--show-path` — human tables print `name (path)`
1818
- Selection fixes: depth-aware under-root aliases, directory `--exclude`/`--in`, clearer passthrough flag-order errors
1919
- mdBook docs, `./scripts/ci.sh`, and reproducible `scripts/bench.py`
2020

21+
See [Install](./install.md) for Homebrew upgrade / `PATH` shadowing notes, and [Targeting & flags](./targeting.md) for selection behavior.
22+
2123
## What’s in 1.1.0
2224

2325
- Semantic colors in `overview` / `sync` / `stale` tables (tree, age, ahead/behind)

docs/src/packaging.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@ Tap: [`chtnnh/homebrew-tap`](https://github.com/chtnnh/homebrew-tap). cargo-dist
2222
```bash
2323
brew tap chtnnh/tap
2424
brew install git-gist
25+
brew update && brew upgrade git-gist
2526
```
2627

28+
After upgrading, if `gg version` is stale, check `which -a gg` — a Cargo install under `~/.cargo/bin` often shadows Homebrew. See [Install](./install.md).
29+
2730
### Debian / RPM
2831

2932
Attached by [`.github/workflows/packages.yml`](../../.github/workflows/packages.yml) after a Release is published. Locally: `cargo deb` / `cargo generate-rpm` (metadata in `Cargo.toml`).
@@ -47,4 +50,4 @@ Optional later: nixpkgs / NUR PRs.
4750
4. Verify Release assets (archives + installers)
4851
5. Confirm Homebrew tap formula updated
4952
6. `cargo publish`
50-
7. Smoke-test: `brew upgrade git-gist`, installer script, `nix run`, `gg version`
53+
7. Smoke-test: `brew upgrade git-gist`, `which -a gg`, installer script, `nix run`, `gg version`

docs/src/quickstart.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,35 @@ Scope to the current directory (honors `--root`; does not pull in out-of-root al
1515
gg ov --root .
1616
```
1717

18+
Show paths next to repo names (useful when basenames collide):
19+
20+
```bash
21+
gg --show-path ov
22+
# or permanently:
23+
gg config set show_path true
24+
```
25+
26+
Shallow discovery / drop a whole subtree:
27+
28+
```bash
29+
gg --root ~/code --depth 2 --refresh list
30+
gg -g work --exclude ~/code/legacy list
31+
```
32+
1833
Enroll new repos from watch rules in config:
1934

2035
```bash
2136
gg update --dry-run
2237
gg update
2338
```
2439

40+
Global flags go **before** a passthrough git verb:
41+
42+
```bash
43+
gg --dry-run status -sb # good
44+
# gg status --dry-run # errors with a hint
45+
```
46+
2547
Generate completions:
2648

2749
```bash

packaging/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@ Tap repo: [`chtnnh/homebrew-tap`](https://github.com/chtnnh/homebrew-tap)
2727
```bash
2828
brew tap chtnnh/tap # first time; may need `brew trust chtnnh/tap` on Homebrew 6+
2929
brew install git-gist
30+
brew update && brew upgrade git-gist # later versions
3031
```
3132

3233
- **v1.0.0 bootstrap:** source-build formula in the tap (historical).
3334
- **v1.1.0+:** cargo-dist overwrites `Formula/git-gist.rb` with a bottle/prebuilt formula (`tap = "chtnnh/homebrew-tap"` in `dist-workspace.toml`).
3435
- Requires repo secret `HOMEBREW_TAP_TOKEN` (PAT with Contents write on `chtnnh/homebrew-tap`).
36+
- After `brew upgrade`, if `gg version` is stale, check `which -a gg``~/.cargo/bin/gg` often shadows Homebrew.
3537

3638
Template / fallback source formula: [`packaging/homebrew/git-gist.rb`](homebrew/git-gist.rb) (kept in sync for operators who build from source).
3739

0 commit comments

Comments
 (0)