Skip to content

feat(git-sync): add reusable scheduled repository sync service #142

@Bad3r

Description

@Bad3r

Summary

Create one reusable, conflict-safe scheduled git-sync primitive for user data repositories, then configure Logseq and Obsidian as consumers of that primitive instead of solving the same sync lifecycle twice.

Child Issues

Goals

  • Provide one implementation for scheduled repository sync.
  • Keep force-push and overwrite behavior impossible by default.
  • Handle no-change runs without empty commits.
  • Make failures observable through logs and notifications.
  • Support one-command manual sync for each configured repository.
  • Keep application-specific paths, remotes, credentials, and ignore rules in per-app adapters.

Acceptance Criteria

  • Reusable sync script/service design exists.
  • Scheduled trigger exists for configured repositories.
  • Pull/rebase/push behavior is conflict-safe and never force-overwrites remote history.
  • No-change runs exit cleanly without commits.
  • Logs include changed-file summary, commit hash when applicable, and push result.
  • Manual sync command exists.
  • Logseq adapter is wired through chore: automate Logseq graph git sync #104.
  • Obsidian adapter is wired through chore: automate Obsidian vault git sync #105.
  • Documentation covers setup, scheduling, credentials, recovery, and troubleshooting.

Notes

This is the parent tracker. Logseq and Obsidian issues should stay focused on application-specific configuration after the shared sync primitive exists.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area(automation)Use for scheduled jobs, sync jobs, or workflow-driven operational behavior; not for bot origin.area(docs)Repository documentation is a significant affected surface.area(git)Repository sync, Git workflows, credentials, branches, or policy.focus(data-integrity)Sync correctness, conflict safety, durability, or integrity guarantees.priority(p3)Normal priority.status(backlog)Accepted work that is intentionally unscheduled.type(enhancement)Net-new capability or intentional improvement.

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions