You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat: status, sync and open across repositories #5
The state of every managed repository is visible in one command, and they can be refreshed
together.
Context
Trigger: fifth milestone, independent of the health issue and runnable in parallel with it.
Affected: internal/git, cmd/gitcd.
Reported and to be re-probed here: cloning an empty repository leaves an unborn HEAD, and git status --porcelain=v2 --branch then prints # branch.oid (initial) and no # branch.ab
line. A branch without an upstream prints no # branch.ab line either. Both cases must render
as a state, never as a crash or a blank column.
sync uses a bounded pool of four. Serialising the first SSH connection per host was considered
and rejected: the agent and ControlMaster already handle the prompt storm.
Also in this milestone, small and parser driven: gitcd open opens the remote in a browser,
built from the existing remote parser.
Acceptance criteria
gitcd status prints branch, dirty state and ahead or behind per repository.
A repository with an unborn HEAD renders as a state, with a test.
A branch without an upstream renders as a state, with a test.
gitcd status --json prints the same as structured output.
gitcd status exits non zero when any repository is dirty, behind the flag --strict.
gitcd sync fetches every repository with a pool of four.
gitcd sync reports per repository failures without aborting the run, and exits non zero
when any failed.
gitcd open [query] opens the remote in a browser and --print prints the URL instead.
Tests cover the status rendering cases and the failure aggregation. No network.
Activity
feat(status): read a repository's state from porcelain v2
feat(gitsync): fetch repositories in a bounded pool
feat(remote): build the web URL a remote points at
feat(cli): add status, sync and open
docs(agents): record the status, sync and open packages
fix(cli): wrap the discover errors and cover every forge shape