79 lines
2.2 KiB
Bash
Executable File
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
|