A file-based task manager
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

tsk-41: document the opt-in nature of plain-git sync

Chose option A from the design discussion: don't auto-mutate the
user's git config, just document the opt-in path more clearly. The
trade-offs that ruled out auto-setup:

- Setting `remote.<name>.push` overrides `push.default`. Once we
configure it, plain `git push` no longer pushes branches the way
the user expects — it pushes whatever's in the configured refspec.
Adding `HEAD` softens but doesn't eliminate the surprise (anyone
on push.default=matching is silently narrowed).
- Mutating `.git/config` from `tsk show` / `tsk list` is invasive.
Some users may not want tsk refs riding along on their pushes.

So `tsk git-setup` stays explicit. AGENTS.md gains a note documenting
the trade-off so users aren't surprised when running it changes their
push behavior; the recommended path for users who don't want that is
to keep using `tsk git-push` / `tsk git-pull` and skip git-setup.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

+14 -3
+14 -3
AGENTS.md
··· 88 88 89 89 ## Sync with the user 90 90 91 - Local refs aren't visible to the user until pushed: 92 - 93 91 ``` 92 + tsk git-setup [-r <remote>] # one-time per clone: configure refspecs so plain 93 + # git push/fetch will carry refs/tsk/* (default remote 94 + # is "origin"). Mutates .git/config; opt-in. 94 95 tsk remote set-default <name> # use this git remote for git-push/pull and the auto-push paths 95 96 tsk git-push # push refs/tsk/* to default remote (also runs after assign/reject) 96 - tsk git-pull # fetch + reconcile divergent task histories 97 + tsk git-pull # fetch + reconcile divergent task histories (with merge driver) 97 98 tsk git-pull --rebase # replay local commits on the remote tip instead of merging 98 99 tsk inbox # auto-pulls then lists pending inbox items 99 100 ``` 101 + 102 + Use `tsk git-pull` (not plain `git fetch`) when local task / queue / 103 + namespace refs may have diverged from the remote — only the tsk command 104 + runs the 3-way merge driver. Plain `git fetch` force-overwrites them. 105 + 106 + Note: `tsk git-setup` adds `remote.<name>.push = refs/tsk/*:refs/tsk/*` 107 + which OVERRIDES `push.default`. After running it, `git push` with no 108 + args pushes the configured refspecs only (i.e. tsk refs) — branches 109 + need an explicit `git push <remote> <branch>`. If that's not what you 110 + want, just keep using `tsk git-push` and skip the setup. 100 111 101 112 ## Offline transfer (email, etc.) 102 113