Files
hermes-config/bin/hermes-sync
2026-03-14 14:43:52 -04:00

79 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# hermes-sync — keep sovereign fork current with upstream
#
# Usage:
# hermes-sync # pull upstream, rebase sovereign patches on top
# hermes-sync push # also push to Gitea after rebase
# hermes-sync config # commit + push config changes
# hermes-sync status # show both repos' status
#
set -euo pipefail
HERMES_HOME="$HOME/.hermes"
AGENT_DIR="$HERMES_HOME/hermes-agent"
case "${1:-rebase}" in
rebase)
echo "═══ Syncing hermes-agent with upstream ═══"
cd "$AGENT_DIR"
git fetch upstream
echo "→ Rebasing sovereign onto upstream/main..."
git rebase upstream/main
echo "✅ Sovereign branch rebased. Run 'hermes-sync push' to push to Gitea."
;;
push)
echo "═══ Syncing hermes-agent with upstream + push ═══"
cd "$AGENT_DIR"
git fetch upstream
echo "→ Rebasing sovereign onto upstream/main..."
git rebase upstream/main
echo "→ Force-pushing sovereign to Gitea..."
git push origin sovereign --force-with-lease
echo "→ Updating main mirror..."
git checkout main
git pull upstream main
git push origin main
git checkout sovereign
echo "✅ Both branches synced to Gitea."
;;
config)
echo "═══ Committing hermes config changes ═══"
cd "$HERMES_HOME"
git add -A
if git diff --cached --quiet; then
echo "No config changes to commit."
else
git commit -m "update: $(date +%Y-%m-%d) config sync"
git push origin main
echo "✅ Config pushed to Gitea."
fi
;;
status)
echo "═══ hermes-agent (sovereign fork) ═══"
cd "$AGENT_DIR"
git log --oneline -3
echo ""
git status --short | head -10
AHEAD=$(git rev-list upstream/main..sovereign --count 2>/dev/null || echo "?")
BEHIND=$(git rev-list sovereign..upstream/main --count 2>/dev/null || echo "?")
echo ""
echo "Patches ahead of upstream: $AHEAD"
echo "Commits behind upstream: $BEHIND"
echo ""
echo "═══ hermes-config ═══"
cd "$HERMES_HOME"
git log --oneline -3
echo ""
git status --short | head -10
;;
*)
echo "Usage: hermes-sync [rebase|push|config|status]"
exit 1
;;
esac