🧪 Skills

Git Sync Daemon

Manage multiple git repositories with a daemon model (periodic add/commit/pull/push). Use this skill when you need to set up, run, or troubleshoot automated...

v1.0.0
❤️ 0
⬇️ 94
👁 1
Share

Description


name: git-sync-daemon description: > Manage multiple git repositories with a daemon model (periodic add/commit/pull/push). Use this skill when you need to set up, run, or troubleshoot automated git sync on macOS (launchd) or Linux (systemd), including repo registration and service lifecycle.

Git Sync Daemon

Purpose

Provide a reusable, daemon-based git auto-sync workflow:

  • one repo list file
  • one daemon process
  • per-repo lock and independent failure isolation
  • service management on macOS and Linux

Files

  • Engine: scripts/git_sync_daemon.sh
  • Control CLI: scripts/git_sync_ctl.sh

Default Runtime Paths

  • State dir: ~/.config/git-sync-daemon
  • Repo list: ~/.config/git-sync-daemon/repos.conf
  • Log file: ~/.config/git-sync-daemon/git-sync-daemon.log

Repo Entry Format

One line per repo:

/absolute/path/to/repo|remote=origin|branch=main|enabled=1

Supported keys:

  • remote (default origin)
  • branch (default current branch)
  • enabled (1/0, true/false, default enabled)

Quick Start (macOS)

bash scripts/git_sync_ctl.sh init
bash scripts/git_sync_ctl.sh add-repo /Users/samwei12/Develop/config
bash scripts/git_sync_ctl.sh run-once
bash scripts/git_sync_ctl.sh install-launchd
bash scripts/git_sync_ctl.sh status

Quick Start (Linux)

bash scripts/git_sync_ctl.sh init
bash scripts/git_sync_ctl.sh add-repo /path/to/repo
bash scripts/git_sync_ctl.sh run-once
sudo bash scripts/git_sync_ctl.sh install-systemd
bash scripts/git_sync_ctl.sh status

Operations

  • Add repo: bash scripts/git_sync_ctl.sh add-repo <path> [branch] [remote]
  • Remove repo: bash scripts/git_sync_ctl.sh remove-repo <path>
  • List repos: bash scripts/git_sync_ctl.sh list-repos
  • One cycle now: bash scripts/git_sync_ctl.sh run-once
  • Status/log tail: bash scripts/git_sync_ctl.sh status

Service lifecycle:

  • macOS install: bash scripts/git_sync_ctl.sh install-launchd
  • macOS uninstall: bash scripts/git_sync_ctl.sh uninstall-launchd
  • Linux install: sudo bash scripts/git_sync_ctl.sh install-systemd
  • Linux uninstall: sudo bash scripts/git_sync_ctl.sh uninstall-systemd

Production hardening checklist

Before enabling daemon mode in production:

  1. SSH/auth baseline
  • Ensure service user can run non-interactive git over SSH to each remote.
  • Preload host keys (ssh-keyscan / StrictHostKeyChecking=accept-new) to avoid first-run failures.
  • Prefer explicit key routing in ~/.ssh/config (host/user/port/IdentityFile/IdentitiesOnly).
  1. Service identity consistency
  • Install service with the same user that owns repo credentials and git config.
  • Verify git config --global user.name/user.email for that service user.
  1. Repo registration policy
  • Register only clean, intended repos.
  • Keep one canonical branch per repo entry; avoid detached HEAD targets.
  • Use enabled=0 for temporary pauses instead of deleting lines.
  1. Observability
  • Keep logs in dedicated file and rotate externally if needed.
  • Validate run-once before enabling persistent service.

Safety Notes

  • The daemon does not force-push.
  • Rebase conflicts are logged and isolated to the affected repo.
  • If git-lfs is required by hooks but missing, that repo is skipped with explicit error log.
  • On macOS launchd, PATH is expanded in both service env and daemon script to include Homebrew binaries.
  • Recommended migration practice: first successful run should use baseline repos only; then gradually add more repos.

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs