Route non-native URL schemes through git remote helpers · Entire

Route non-native URL schemes through git remote helpers

addab0bmain·

Soph·4w ago·1 file·+12 added/-0 removed

newConn now checks for a git-remote- binary when the endpoint scheme isn't one git-sync handles natively, and builds a HelperConn when one exists. http/https are excluded so they always use the optimized native HTTP transport git ships its own git-remote-http(s); ssh is already handled above. This is what makes entire:// URLs work, given git-remote-entire on PATH.

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

Sessions

b8f20408aa93View transcript

[?
❯ GITSYNC_MAX_REF_UPDATES_PER_PUSH=5000 go run ./cmd/git-sync replicate --all-refs --stats --verbose \Claude Code·Opus 4.8[1m]·3 steps](/content/gh/entireio/git-sync/session/4f8f5e9b-9f90-4c22-88b9-988c55f45833#timeline-b8f20408aa93/index.html)

Changes

1

363 unmodified lines

364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381

363 unmodified lines

}
        return conn, nil
    }
    // Schemes git-sync has no native transport for (e.g. entire://) are handed
    // to a git remote helper named git-remote-<scheme>, if one is installed.
    // The helper owns auth and the network round trips; git-sync drives the
    // smart protocol over its stateless-connect bridge. http/https are excluded
    // so we never divert them away from the optimized native HTTP transport
    // (git ships its own git-remote-http(s)).
    if ep.Scheme != "http" && ep.Scheme != "https" {
        if helperPath, ok := gitproto.LookupRemoteHelper(ep.Scheme); ok {
            stats.setSideDisplay(label, hostnameFromURL(raw.URL))
            return gitproto.NewHelperConn(helperPath, ep, raw.URL, label), nil
        }
    }
    authEp := auth.Endpoint{
        Username:      raw.Username,
        Token:         raw.Token,

Minternal/syncer/syncer.go+12