Files
converge/SPEC.md
T
jbrechtel 7feff5abfa converge: phase 2 — SSE relay client for realtime pull on push
- RepoConfig gains rcGiteaRepo :: Maybe Text for relay matching
- Options gains optRelayUrl :: Maybe Text (--relay-url CLI, relay_url config)
- connectRelay connects to converge-relay SSE endpoint, parses push events,
  triggers gitPull on matching repos (by gitea_repo + branch)
- Exponential backoff reconnection (1s .. 60s) on disconnect/error
- Skips pull if repo is mid-operation (merge/rebase/etc.)
- Dependencies: http-client, http-client-tls, http-types, aeson, bytestring
- SSE parser handles event:/data: fields, blank-line delimiters, CRLF endings
- Updated SPEC.md, example config, and help text
2026-05-14 14:13:43 -04:00

1.1 KiB

Converge specifications

Creates a commit after a file is changed

Only creates one commit when multiple changes occur within a 5 second window

Pulls changes from remote "origin" before pushing commits

Rebases when pulling changes from "origin"

Does not operate (stage, commit or push) on git repos when:

a rebase is in progess

a merge is in progess

a revert is in progess

a cherry-pick is in progess

a bisect is in progess

Supports configurable log levels (debug, info, warn, error)

Supports logging to a file instead of stderr via --log-file or log_file config

Can notify on pull: per-repo notify_on_pull setting sends a desktop notification when new commits are pulled from the remote

--sync / -s flag runs a single sync cycle (commit + pull + push) and exits, useful for wake-from-sleep hooks

Can connect to a converge-relay SSE endpoint and automatically pull when push events arrive

Configured via --relay-url CLI flag or relay_url config file entry

Matches repos by gitea_repo field (Gitea repository full_name) and branch

Reconnects automatically with exponential backoff on disconnect or error