🍺 BREW Explorer

← all formulae

git-sync

brew install git-sync v4.7.0 Apache-2.0

Clones a git repository and keeps it synchronized with the upstream

29
30-day installs · #5852
47
90-day · #7533
218
365-day · #7140
2.7k
★ GitHub stars · updated 2mo ago

Runtime dependencies

Build dependencies

go

Links

Raw metadata
{
  "aliases": [],
  "alternatives": [],
  "build_dependencies": [
    "go"
  ],
  "categories": [],
  "caveats": null,
  "conflicts_with": [
    "git-extras"
  ],
  "dependencies": [
    "coreutils"
  ],
  "deprecated": 0,
  "deprecation_reason": null,
  "desc": "Clones a git repository and keeps it synchronized with the upstream",
  "disable_reason": null,
  "disabled": 0,
  "enrichment_fetched_at": "2026-06-20T23:38:06+00:00",
  "first_seen": "2026-06-20T23:34:18+00:00",
  "full_name": "git-sync",
  "github_default_branch": "master",
  "github_last_commit_at": "2026-06-12T22:36:53Z",
  "github_readme_excerpt": "# NOTE: THIS DOCUMENT COVERS GIT-SYNC v4\n\nThis is the \"master\" branch, which is under development.  If you are looking \nfor docs on older (v3) versions of git-sync, you probably want to use the\n[v3.x branch](https://github.com/kubernetes/git-sync/tree/release-3.x).\n\n# git-sync\n\ngit-sync is a simple command that pulls a git repository into a local\ndirectory, waits for a while, then repeats.  As the remote repository changes,\nthose changes will be synced locally.  It is a perfect \"sidecar\" container in\nKubernetes - it can pull files down from a repository so that an application\ncan consume them.\n\ngit-sync can pull one time, or on a regular interval.  It can pull from the\nHEAD of a branch, from a git tag, or from a specific git hash.  It will only\nre-pull if the referenced target has changed in the upstream repository (e.g. a\nnew commit on a branch).  It \"publishes\" each sync through a worktree and a\nnamed symlink.  This ensures an atomic update - consumers will not see a\npartially constructed view of the local repository.\n\ngit-sync can pull over HTTP(S) (with authentication or not) or SSH.\n\ngit-sync can also be configured to make a webhook call or exec a command upon\nsuccessful git repo synchronization. The call is made after the symlink is\nupdated.\n\n## What it produces and why - the contract\n\ngit-sync has two required flags: `--repo`, which specifies which remote git\nrepo to sync, and `--root` which specifies a working directory for git-sync,\nwhich presents an \"API\" of sorts.\n\nThe `--root` directory is _not_ the synced data.\n\nInside the `--root` directory git-sync stores the synced git state and other\nthings.  That directory may or may not respond to git commands - it\u0027s an\nimplementation detail.\n\nOne of the things in that directory is a symlink (see the `--link` flag) to the\nmost recently synced data.  This is how the data is expected to be consumed,\nand is considered to be the \"contract\" between git-sync and consumers.  The\nexact target of that symlink is an impleme",
  "github_repo": "kubernetes/git-sync",
  "github_stars": 2710,
  "github_topics": [],
  "homepage": "https://github.com/kubernetes/git-sync",
  "homepage_og_description": null,
  "homepage_og_image": null,
  "homepage_title": null,
  "installs_30d": 29,
  "installs_365d": 218,
  "installs_90d": 47,
  "keg_only": 0,
  "keg_only_reason": null,
  "last_seen": "2026-06-20T23:34:18+00:00",
  "license": "Apache-2.0",
  "llm_generated_at": null,
  "llm_model": null,
  "name": "git-sync",
  "oldnames": [],
  "one_liner": null,
  "optional_dependencies": [],
  "rank_30d": 5852,
  "rank_365d": 7140,
  "rank_90d": 7533,
  "raw_hash": "9d1abc9be3e8d4e1",
  "recommended_dependencies": [],
  "revision": 0,
  "ruby_source_path": "Formula/g/git-sync.rb",
  "tap": "homebrew/core",
  "test_dependencies": [],
  "uses_from_macos": [],
  "version_head": "HEAD",
  "version_stable": "4.7.0",
  "versioned_formulae": [],
  "why_use_this": null
}