Documentation
¶
Overview ¶
Package fleetsync decides and performs the sync action for a single repo: clone or pull an active repo, or remove/keep an archived one's local clone. It has no TUI or terminal output of its own — callers (e.g. the wb sync worker pool) drive it and render results.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Result ¶
type Result struct {
Repo discover.Repo
Status Status
Detail gitops.RepoStatus
// Tracking is filled in only for Diverged and NoUpstream, whose reports
// are meaningless without the branch names and ahead/behind counts.
Tracking gitops.TrackingState
Err error
}
Result is the outcome of syncing one repo.
func Sync ¶
Sync reconciles a single repo's local clone with its GitHub state: clone if missing, pull if present and clean, skip if the working tree is dirty. For archived repos: remove the local clone if it is safe to (clean, no stash, nothing unpushed), otherwise keep it and report why. Forks and repos not owned by the authenticated user or their orgs (repo.Remote == false) are left untouched (NoOp). Repos marked with `wb repo ignore` are left untouched too (SkippedIgnored), including archived ones. In dryRun mode no mutation happens; Status still reports what would be done.
type Status ¶
type Status int
Status is the outcome fleetsync.Sync took for a single repo.
const ( Cloned Status = iota Pulled SkippedDirty RemovedArchived KeptArchived AbsentArchived NoOp Failed // SkippedIgnored, EmptyRemote, Diverged and NoUpstream are appended last // deliberately: Status is rendered only through String() and never // persisted numerically, but appending keeps the existing values stable // regardless. SkippedIgnored EmptyRemote // Diverged: the branch and its upstream each hold commits the other // lacks, so no fast-forward is possible and sync must not guess a // reconciliation. Diverged // NoUpstream: the checked-out branch tracks nothing, so there is nowhere // to pull from. NoUpstream // Unpushed: the pull succeeded, but the clone holds commits that exist on // no remote. Nothing is wrong with the sync; the work has simply never // left this machine. Unpushed // ArchivedUnlandable: an archived clone holding unpushed commits. The // remote is read-only, so those commits can never be pushed — unlike // KeptArchived, this state cannot resolve itself and needs a decision. ArchivedUnlandable )