Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,34 @@ ti sync
named git-meta remote is used; otherwise git-meta resolves the default metadata
remote from Git config.

## GitButler

TicGit is great on its own, but it's even better with
[GitButler](https://gitbutler.com). GitButler is a wonderful Git client that
lets you work on several branches at once in a single working directory, so you
can juggle a pile of tickets without stashing, switching, or losing your place.
Its `but` CLI is a joy to use, and TicGit is built to take advantage of it.

If `but` is on your `PATH`, TicGit's review commands use it automatically:

```sh
ti review new --branch <branch-name> --ticket <id>
ti review show <branch-name>
ti review update <branch-name>
```

- Branch pickers are populated from `but branch list`, so every applied virtual
branch and stacked head shows up as a review candidate, complete with commit
counts, authors, and last-commit times.
- Review snapshots come from `but branch show`, which knows the real base and
commit range of a stacked branch instead of guessing from refs.
- GitButler's own bookkeeping refs (`gitbutler/*`) are filtered out, so the list
only ever offers branches you actually want to review.

None of this is required. When `but` is not installed, TicGit falls back to
plain `git for-each-ref` and `git rev-list` and everything keeps working. You
just get a nicer experience with GitButler installed.

## What It Stores

All TicGit data is written on the git-meta `project` target under the
Expand Down
5 changes: 5 additions & 0 deletions crates/ticgit/docs/agents.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,11 @@ ti review new --ticket <id>
ti review update
```

Reviews work best under [GitButler](https://gitbutler.com): when the `but` CLI
is installed, TicGit reads branch lists and commit ranges from it, so stacked
and virtual branches are resolved correctly. Without `but`, TicGit falls back to
plain Git refs.

## Agent Practices

- Use ticket IDs or unique prefixes.
Expand Down
5 changes: 5 additions & 0 deletions crates/ticgit/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ use crate::commands;
mine List tickets assigned to you
history Show change history for a ticket
tui Browse open tickets in an interactive terminal UI
serve Browse tickets in your web browser

\x1b[1;36mWork on Tickets:\x1b[0m
checkout, co Select a ticket as \"current\"
Expand Down Expand Up @@ -123,6 +124,9 @@ pub enum Command {
/// Browse open tickets in an interactive terminal UI.
Tui(commands::tui::Args),

/// Serve the ticket list over HTTP for browsing in a web browser.
Serve(commands::serve::Args),

/// Print or install AI agent integration guidance.
Agent(commands::agent::Args),

Expand Down Expand Up @@ -257,6 +261,7 @@ pub fn run(cli: Cli) -> anyhow::Result<()> {
}
Some(Command::History(args)) => commands::history::run(args),
Some(Command::Tui(args)) => commands::tui::run(args),
Some(Command::Serve(args)) => commands::serve::run(args),
Some(Command::Agent(args)) => commands::agent::run(args),
Some(Command::Tag(args)) => commands::tag::run(args),
Some(Command::State(args)) => commands::state::run(args),
Expand Down
1 change: 1 addition & 0 deletions crates/ticgit/src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ pub mod priority;
pub mod pull;
pub mod recent;
pub mod review;
pub mod serve;
pub mod setup;
pub mod show;
pub mod spec;
Expand Down
Loading