源码快照 @ 2026-09-02 (source-only, 剔除非源码素材)
This commit is contained in:
Executable
+80
@@ -0,0 +1,80 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Layered rollback runbook for org MCP connections (PRs #2406 + #2451 (desktop PR #2439 was superseded by #2451)).
|
||||
#
|
||||
# Layer 0 — instant, no deploy (prefer this): in /admin, disable the
|
||||
# mcpConnections capability for affected organizations. The deprecated
|
||||
# DEN_MCP_CONNECTIONS_GATING_ENABLED env var is inert; every desktop version in
|
||||
# the field goes dark on its next poll from the org-level kill switch.
|
||||
#
|
||||
# Layer 1 — code revert (this script): builds a revert branch from the squash
|
||||
# commits on origin/dev, newest first, and opens a PR. Desktop app code is
|
||||
# harmless while the server feature is dark, so reverting #2451 alone is
|
||||
# usually enough; --all also reverts the server/API PR #2406.
|
||||
#
|
||||
# DB note: #2406's tables (external MCP connections, grants) are additive.
|
||||
# A code revert leaves them in place on purpose — do NOT run destructive
|
||||
# down-migrations as part of an emergency revert.
|
||||
#
|
||||
# Usage:
|
||||
# bash scripts/revert-org-mcp-connections.sh # revert #2451 only (dry run)
|
||||
# bash scripts/revert-org-mcp-connections.sh --execute # create the revert branch
|
||||
# bash scripts/revert-org-mcp-connections.sh --all --execute
|
||||
# bash scripts/revert-org-mcp-connections.sh --all --execute --push # + push and open PR
|
||||
|
||||
PRS=(2451)
|
||||
EXECUTE=0
|
||||
PUSH=0
|
||||
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case "$1" in
|
||||
--all) PRS=(2451 2406) ;;
|
||||
--pr) shift; PRS+=("${1:?missing PR number}") ;;
|
||||
--execute) EXECUTE=1 ;;
|
||||
--push) PUSH=1 ;;
|
||||
*) echo "Unknown option: $1" >&2; exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
git fetch origin dev
|
||||
|
||||
SHAS=()
|
||||
for pr in "${PRS[@]}"; do
|
||||
sha="$(git log origin/dev --grep "(#${pr})" --format=%H -1)"
|
||||
if [ -z "$sha" ]; then
|
||||
echo "ERROR: no squash commit for PR #${pr} found on origin/dev — is it merged?" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "PR #${pr} -> $(git log -1 --oneline "$sha")"
|
||||
SHAS+=("$sha")
|
||||
done
|
||||
|
||||
if [ "$EXECUTE" -ne 1 ]; then
|
||||
echo ""
|
||||
echo "Dry run. Re-run with --execute to create the revert branch."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
echo "ERROR: working tree is dirty." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BRANCH="revert/org-mcp-connections-$(date -u +%Y%m%d-%H%M)"
|
||||
git switch -c "$BRANCH" origin/dev
|
||||
for sha in "${SHAS[@]}"; do
|
||||
git revert --no-edit "$sha"
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "Revert branch ready: $BRANCH"
|
||||
if [ "$PUSH" -eq 1 ]; then
|
||||
git push origin "$BRANCH"
|
||||
gh pr create --base dev --head "$BRANCH" \
|
||||
--title "revert: org MCP connections (${PRS[*]/#/#})" \
|
||||
--body "Emergency revert of the org MCP connections stack. Layer-0 kill switch (mcpConnections org capability set to false) should already be active; this removes the code. Additive DB tables are intentionally left in place."
|
||||
else
|
||||
echo "Next: git push origin $BRANCH && gh pr create --base dev --head $BRANCH"
|
||||
fi
|
||||
Reference in New Issue
Block a user