Git hosts and publishing

Hop v1.1.4 is forge-neutral. Its core state, workspace, merge, validation, landing, push, and tag workflows use Git itself.

Core Git compatibility

Hop works with:

  • GitHub and GitHub Enterprise
  • GitLab and self-hosted GitLab
  • Gitea and Forgejo
  • generic SSH or HTTPS Git servers
  • local bare repositories
  • projects with no remote, which remain local without error

Hosted CI is optional. Hop validates locally using the command supplied to hop check or hop land.

Detect the host

hop host

The command reports provider, hostname, owner/repository, selected push remote, and collaboration adapter. HOP_FORGE=github, gitlab, gitea, or generic can identify a self-hosted provider whose hostname is not recognizable.

Automatic publication

After successful acceptance, Hop non-force-pushes the accepted commit when the active branch has an unambiguous destination: its push remote, configured upstream, origin, or sole remote. Publication never moves the local branch, index, or visible working tree.

hop push          # retry the accepted branch
hop push-tag TAG  # publish an existing tag safely

Push failure does not undo local acceptance. Hop records the failure and remote tip. A non-fast-forward result must be reconciled; Hop never force-pushes.

Collaboration adapters

Issues, pull requests, releases, repository creation, and similar forge APIs are optional capabilities:

ProviderAdapter
GitHubexisting authenticated gh CLI
GitLabexisting authenticated glab CLI
Giteaembedded compatibility adapter
Generic Gitcore Git commands only

Portable command families include hop issues, hop pulls, hop releases, hop repos, hop actions, hop open, and hop api. Unsupported capabilities fail clearly without affecting core version control.

Credentials

Use the repository's existing SSH key, OS credential helper, or provider CLI login. Hop and its agent skill forbid creating, listing, rotating, revoking, or pasting access tokens. Never embed a token in a remote URL.

Move a repository

Changing a remote is an explicit publishing-destination change:

git remote set-url origin git@github.com:OWNER/REPOSITORY.git
hop host
hop push

An agent may perform that change only when the user requested it. Preserve the old remote under another name when a migration bridge or rollback may still be needed.