Skip to content

Implement fast-forward Pull, normal Push, and Publish Branch #14

Description

@codeacme17

Tracks #1.

Summary

Implement fast-forward-only Pull, exact-Upstream normal Push, and same-name Publish Branch with explicit targets and no history rewriting.

Scope

  • Pull only from the displayed Local Branch Upstream and only from a clean Worktree with no Conflict or In-progress Git Operation.
  • Enforce explicit fast-forward-only integration; ahead is a no-op and divergence is blocked without Merge/Rebase.
  • Push only the current Local Branch to its exact configured Upstream ref.
  • Allow Push with local uncommitted content while explicitly stating it is not included.
  • Block known behind/diverged Push and never retry a rejection with force.
  • Publish an unpublished Local Branch only after confirming exact Remote and same-name target; set Upstream after confirmed success.
  • Revalidate Worktree/Branch/ref/Upstream target evidence before execution and run through the Repository remote lane.
  • Use existing Git credential helpers and SSH; distinguish offline, auth, permission, policy/protected-Branch, non-fast-forward, Partial Success, and UnknownOutcome.
  • Reconcile Local Branch, Remote-tracking refs, Upstream config, status, and operation result after every attempt.

Acceptance criteria

  • Behind Pull fast-forwards; ahead Pull does nothing; diverged Pull changes no files/refs and routes safely to Terminal guidance.
  • Push transfers only committed history to exactly the displayed Upstream; uncommitted content remains local.
  • Publish confirms the exact target and configures Upstream only after verified success.
  • No command uses force, force-with-lease, matching refs, tags, deletion, Merge, Rebase, or automatic retry.
  • Auth/policy/non-fast-forward failures stay distinct and expose sanitized diagnostics.
  • Concurrent remote operations return BUSY rather than queueing.

Out of scope

  • Credential UI/setup, conflict resolution, force operations, remote Branch deletion, or generalized refspec entry.

Dependencies

PRD coverage

  • Pull/Push/Publish portions of FR7; AC-15–18 and AC-20–21.

Verification

  • Local bare-remote fast-forward/divergence matrices, protected/rejected server fixtures, exact-ref assertions, cancellation/reconciliation tests, and redaction tests.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Core reachable product behavior required for the MVPenhancementNew feature or request

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions