Git-Native Sync Worklog leverages Git to provide seamless, private
synchronization across devices without the need for a proprietary cloud backend.
Overview Unlike tools that sync a binary database file (which leads to
frequent merge conflicts), Worklog uses a sophisticated Mapper Layer. This layer converts your local SQLite database into portable, human-readable JSON files before pushing them to your Git remote.
Configuration To enable synchronization, navigate to Settings → Sync and
provide the following details: - Remote URL: The HTTPS URL of your private
Git repository. - Access Token: A Personal Access Token (PAT) with repo scope. - Branch: The branch you want to use for syncing (defaults to main). - Auto-Sync: When enabled, Worklog will automatically push changes
to the remote whenever you save a ticket or board. ## The Sync Process ###
Pushing (Local → Remote) When you trigger a push, Worklog extracts a snapshot of
your database, serializes it into structured JSON files (one for each board,
plus global metadata), and commits them to a hidden .worklog/sync/ directory
before pushing to your remote. ### Pulling (Remote → Local) When pulling,
Worklog fetches the latest JSON files from your remote, merges them with your
local state using an intelligent Upsert strategy, and updates your local
SQLite database. ## Security & Privacy
- Local Token Storage: Your Personal Access Token is stored locally in the Tauri app's encrypted store. It never leaves your machine except to authenticate with your Git provider.
- Direct Communication: Worklog communicates directly with GitHub/GitLab. There is no middleman or proxy server involved.
- No Vendor Lock-in: Since your data is stored as plain JSON in Git, you can access it, backup it, or even build your own tools on top of it without Worklog.
Conflict Resolution If local and remote changes diverge, Worklog will attempt
a fast-forward merge. If a conflict occurs within the JSON files, the sync engine will report a conflict status. You can then choose to: - Force Push: Overwrite the remote state with your current local data. - Force Pull: Overwrite your local data with the remote state.
Next: Architecture →