Skip to main content

What is a mirror?

A mirror is a synced, read-optimized copy of a GitHub repository, hosted on Entire’s Git network in the region you choose. The repository stays on GitHub, and mirroring gives developers and agents a low-latency entire:// remote they can clone, fetch, and push through without a hard cutover. Developers can keep pushing to GitHub as usual, while agents, automation, or selected users use the entire:// remote. Behind the scenes, Entire keeps the mirror in sync. Mirrors are served by the same distributed network as Entire Repositories. See that page for the larger model behind regional Git reads, repository state, and agent traffic.

How mirrors work

To mirror a GitHub repository, the Entire GitHub App must be able to access the repository. After that, a user with access to the GitHub repository can create the mirror from Entire.io or sign in with entire login and create it from the CLI. When the mirror is created:
  • Entire syncs the repository from GitHub
  • the mirror is placed in the selected Entire region
  • users get an entire:// Git remote
  • agents can clone and fetch from the regional mirror
  • pushes through the mirror are authenticated with GitHub
The mirror keeps Git reads close to where agents run, while pushes remain authenticated with GitHub.

Create a mirror

To create a mirror from the web app, see Mirrors in Entire.io. For the command-line flow, see Mirrors in CLI. For an end-to-end tutorial, see Mirror a GitHub Repository.

What changes

Creating a mirror gives you:
  • a synced Entire copy of the GitHub repository
  • an entire:// remote for Git operations
  • a regional read path for agents and automation
  • an Entire mirror access list synced hourly with GitHub collaborators
You can use the mirror from a fresh clone or add it as a remote to an existing checkout.

What does not change

Creating a mirror does not:
  • move, delete, or replace the GitHub repository
  • require every developer to change remotes
  • rewrite Git history
  • bypass GitHub authentication for pushes
Entire syncs GitHub collaborators into mirror access hourly. See Mirror Access and Permissions for GitHub-synced access, self-onboarding, and offboarding.

Unmirrored branches

Branches whose names start with entire/unmirrored/ are never synced to GitHub. An unmirrored branch exists only in the Entire region you push it to: it does not appear on GitHub, and it is not available from mirrors in other regions. Because pushes to unmirrored branches stay in Entire instead of being forwarded to GitHub, they are not subject to GitHub’s push rate limits. Use an unmirrored branch when you need:
  • more push throughput than GitHub allows
  • a branch you can keep pushing to while GitHub is unavailable
  • a target for push benchmarks
To benchmark push throughput, for example with ForgeMark, Entire’s open-source Git push benchmarking tool, push to an unmirrored branch. Pushes to regular branches are forwarded to GitHub, so a benchmark against them measures GitHub’s push rate limits rather than Entire’s throughput. Mirror access still applies: you need write access through the mirror to push an unmirrored branch. To publish the work on GitHub later, push the same commits to a branch name outside the entire/unmirrored/ prefix.
Entire does not currently back up unmirrored branches. Keep a copy of any work you cannot afford to lose on a mirrored branch or on GitHub.

Limitations

Mirrors do not currently support Git LFS. See Limitations for details and workarounds.

Continue with

GitHub App Access

Choose which GitHub repositories Entire can access.

Mirrors in Entire.io

Configure GitHub access and choose repositories from the web app.

Mirrors in CLI

Create a mirror from the terminal and use it from Git.

Mirror Access and Permissions

Understand GitHub-synced access, hourly collaborator sync, and offboarding.

Limitations

See what mirrors do not support yet, and the workarounds.

Troubleshooting

Fix mirror setup, access, clone, fetch, and push issues.