Sync and Setup
Commands: ti sync, ti pull, ti init, ti setup, ti update
How TicGit stores data
TicGit stores tickets as git-meta metadata, which lives in a separate Git ref (refs/meta/main). This means:
- Tickets don't clutter your working tree or commit history
- They sync with
git push/git pullon the meta ref - Multiple people can work on tickets offline and merge later
- The full ticket history is in the repo, not on a server
ti init
Initialize TicGit on a repository for the first time:
This is idempotent -- running it again is safe.
ti setup
If the repo has a .git-meta file (a one-line file with the remote URL), ti setup configures the git-meta remote:
This also happens automatically the first time you run any ti command in a repo with a .git-meta file.
ti sync
Sync pulls remote ticket changes, then pushes your local changes:
When there's nothing new:
Specify a remote
By default, ti sync uses the first remote with remote.<name>.meta = true in your git config, falling back to origin.
ti pull
Pull tickets from a fork or any remote URL. Unlike ti sync, this is a one-way import -- it fetches tickets from another repo and merges them into yours.
Save a nickname
Add a nickname so you don't have to type the full URL each time. The nickname is saved in .git/config.
Merge rules: new tickets are imported as-is. For modified tickets, scalar fields (title, description, status) use the remote's value, set fields (tags, comments) are merged by union, and comments are deduplicated by author and body.
ti update
Team workflow
A typical team setup:
1. One person initializes TicGit and adds the .git-meta file:
2. Everyone else clones and starts using tickets:
3. Sync regularly:
Since tickets are just Git data, conflicts are handled by git-meta's merge strategy. In practice, conflicts are rare because tickets use structured fields rather than free-form text files.