Install and Service Registration
This guide covers bootstrap install plus service registration for Linux and Windows.
For first-run onboarding after install, follow getting-started/first-run-onboarding.md.
Mode Comparison
usermode only:- no elevation required,
- best for per-user repositories and credentials.
Install Directly from GitHub main
Use these one-liners to execute the latest install scripts from the main branch.
Bootstrap install (fresh machine)
bash
curl -fsSL https://raw.githubusercontent.com/basmulder03/git-project-sync/main/scripts/bootstrap/install.sh | bash -s -- --userpowershell
powershell -NoProfile -ExecutionPolicy Bypass -Command "$p=Join-Path $env:TEMP 'gps-bootstrap-install.ps1'; iwr 'https://raw.githubusercontent.com/basmulder03/git-project-sync/main/scripts/bootstrap/install.ps1' -OutFile $p; & $p -Mode user; Remove-Item $p -Force"Bootstrap installs these binaries:
syncd(daemon service target)syncctl(CLI)synctui(runtime dashboard)
Only syncd is registered with systemd/Task Scheduler. synctui remains an on-demand interactive tool.
Uninstall (from GitHub main)
bash
curl -fsSL https://raw.githubusercontent.com/basmulder03/git-project-sync/main/scripts/uninstall.sh | bash -s -- --userbash
curl -fsSL https://raw.githubusercontent.com/basmulder03/git-project-sync/main/scripts/uninstall.sh | sudo bash -s -- --systempowershell
powershell -NoProfile -ExecutionPolicy Bypass -Command "$p=Join-Path $env:TEMP 'gps-uninstall.ps1'; iwr 'https://raw.githubusercontent.com/basmulder03/git-project-sync/main/scripts/uninstall.ps1' -OutFile $p; & $p -Mode user; Remove-Item $p -Force"powershell
powershell -NoProfile -ExecutionPolicy Bypass -Command "$p=Join-Path $env:TEMP 'gps-uninstall.ps1'; iwr 'https://raw.githubusercontent.com/basmulder03/git-project-sync/main/scripts/uninstall.ps1' -OutFile $p; & $p -Mode system; Remove-Item $p -Force"Local Repository Script Usage
Bootstrap install (fresh machine, no preinstalled binaries)
bash
./scripts/bootstrap/install.sh --userpowershell
./scripts/bootstrap/install.ps1 -Mode userService registration only
bash
./scripts/install.sh --userpowershell
./scripts/install.ps1 -Mode userUninstall (local scripts)
bash
./scripts/uninstall.sh --userbash
sudo ./scripts/uninstall.sh --systempowershell
./scripts/uninstall.ps1 -Mode userpowershell
./scripts/uninstall.ps1 -Mode systemOptional bootstrap parameters (both OS script families):
- pin version:
--version(Linux),-Version(Windows) - use fork repository:
--repo(Linux),-Repo(Windows)
Environment overrides:
- Linux:
BIN_PATHdefault:~/.local/bin/syncdCONFIG_PATHdefault:~/.config/git-project-sync/config.yaml
- Windows:
BIN_PATHdefault:%LOCALAPPDATA%\git-project-sync\bin\syncd.exeCONFIG_PATHdefault:%APPDATA%\git-project-sync\config.yaml- installer adds the binary directory to PATH in
Userscope
Service files:
- Linux user mode:
~/.config/systemd/user/git-project-sync.service - Windows mode: Task Scheduler task
GitProjectSync
Offline/manual fallback
If bootstrap download is not possible, place syncd (and optionally syncctl) manually on disk, then run scripts/install.sh or scripts/install.ps1 with BIN_PATH and CONFIG_PATH overrides.
Notes
- Install/uninstall flows are designed to be idempotent.
- Windows flow uses Task Scheduler and validates registration after install.