entireio/git-sync

Description: 🪩 Mirror git refs from a source remote to a target remote without a local checkout. Packfiles stream directly over Smart HTTP and an in-memory object store.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 12 minutes ago
Added to GitGenius on July 9th, 2026
Created on April 8th, 2026
Open Issues & Pull Requests: 5 (+0)
Number of forks: 23
Total Stargazers: 471 (+0)
Total Subscribers: 1 (+0)

Issue Activity (beta)

Open issues: 4
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 55 days
Stale 30+ days: 4
Stale 90+ days: 0

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Repository Insights (GitGenius)

Median issue/PR response: 12.5 hours
Mean response time: 40.5 hours
90th percentile: 4.1 days
Tracked items: 10

Most active contributors

Detailed Description

git-sync is a Go-based tool for mirroring Git references and objects from a source remote to a target remote without requiring a local checkout. The core innovation is its ability to stream packfiles directly over Smart HTTP using an in-memory object store, eliminating the need for local disk storage during synchronization operations. This approach addresses a significant scaling problem: traditional Git mirroring workflows create a local mirror clone and then push to the target, which becomes a local storage bottleneck for large repositories. git-sync instead operates as a pure remote-to-remote operation with structured planning and typed JSON output for automation.

The tool provides three main command modes. The sync command mirrors source refs into the target and automatically bootstraps empty targets, making it suitable for both initial seeding and ongoing synchronization. The replicate command overwrites target refs to match the source via relay and fails rather than materializing objects locally. The plan command previews what would happen without actually pushing, using the same flags as sync. Additionally, git-sync includes a convert-sha256 command for one-off SHA1 to SHA256 repository conversions with optional commit-message hash rewrites and mapping file output.

git-sync implements two distinct transfer paths to handle different scenarios. The relay path streams pack data directly from source upload-pack into target receive-pack without holding an object graph locally, keeping memory bounded regardless of repository size. The materialized fallback path fetches needed objects into an in-memory go-git store when relay is unavailable, then encodes and pushes a packfile with memory usage guarded by an explicit object-count limit. The tool supports creating, updating, and deleting refs, force updates via the force flag, and managed ref deletion through the prune option.

The repository is written in Go and requires version 1.26 or newer. Installation is available through Homebrew for macOS and Linux, or via go install. The project maintains comprehensive documentation covering usage patterns, architecture decisions, protocol details, SHA256 conversion procedures, and testing methodologies. The library API is available for Go embedding through the stable entire.io/entire/git-sync package, with an unstable variant exposing advanced controls like Bootstrap, Fetch, and batching configuration.

According to GitGenius activity tracking, the repository shows a median issue and pull request response latency of 12.5 hours with a mean of 40.5 hours across tracked items. The most active contributor tracked is Soph with 11 events, followed by georg and mvanhorn with one event each. The project maintains connections with related repositories including aaif-goose/goose, block/goose, and entireio/cli through overlapping contributors. The tool syncs complete Git object history for selected refs without creating shallow clones, though some planning paths may use filtered fetches. It operates as a one-shot CLI and library operation rather than a daemon, requiring external scheduling through cron, CI systems, or worker services for periodic synchronization.

git-sync
by
entireioentireio/git-sync

Repository Details

Fetching additional details & charts...