go-git/CLAUDE.md
Snider a3ff06c764 feat: extract go-git from go-scm/git
Multi-repo git operations: parallel status, sequential push/pull,
error handling with stderr capture. 96.7% test coverage.

All 40 tests passing.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 15:26:30 +00:00

58 lines
1.7 KiB
Markdown

# CLAUDE.md — go-git
## Overview
Multi-repository git operations library. Parallel status checks, sequential push/pull (for SSH passphrase prompts), error handling with stderr capture.
**Module:** `forge.lthn.ai/core/go-git`
**Extracted from:** `forge.lthn.ai/core/go-scm/git/`
**Coverage:** 96.7%
## Build & Test
```bash
go test ./... -v # Run all tests
go test -run TestName # Run single test
```
## Architecture
Two files:
- `git.go` — Core operations: Status, Push, Pull, PushMultiple (no framework dependency)
- `service.go` — Core framework integration: queries (QueryStatus, QueryDirtyRepos, QueryAheadRepos) and tasks (TaskPush, TaskPull, TaskPushMultiple)
## Key Types
```go
type RepoStatus struct {
Name, Path, Branch string
Modified, Untracked, Staged, Ahead, Behind int
Error error
}
func Status(ctx context.Context, opts StatusOptions) []RepoStatus // parallel
func Push(ctx context.Context, path string) error // interactive (stdin/stdout)
func Pull(ctx context.Context, path string) error // interactive (stdin/stdout)
func PushMultiple(ctx context.Context, paths []string, names map[string]string) []PushResult // sequential
func IsNonFastForward(err error) bool
```
## Test Naming
`_Good`, `_Bad`, `_Ugly` suffix pattern. Tests use real git repos via `initTestRepo()`.
## Coding Standards
- UK English in comments
- `Co-Authored-By: Virgil <virgil@lethean.io>` in commits
- Errors wrapped as `*GitError` with stderr capture
## Dependency
Only `forge.lthn.ai/core/go/pkg/framework` for ServiceRuntime integration. The core git operations (`git.go`) use only stdlib.
## Forge Remote
```bash
git remote add forge ssh://git@forge.lthn.ai:2223/core/go-git.git
```