git-local-checkout.sh 1.3 KB
#!/bin/bash
set -e

# Hook Scripts Run in: Multi-Agent System Root
# Context Env: WORK_DIR, AGENT_NAME, etc.

echo "[Hook:Local:Checkout] Start for task $TASK_ID"

# 1. 模拟 Remote Repo 初始化 (如果不存在)
# 实际场景:这是 Github 服务器,不需要我们管
MOCK_REMOTE_DIR="/tmp/test-repo"

if [ ! -d "$MOCK_REMOTE_DIR/.git" ]; then
  echo "Initializing mock remote repo at $MOCK_REMOTE_DIR"
  mkdir -p $MOCK_REMOTE_DIR
  cd $MOCK_REMOTE_DIR
  git init --bare
  # 创建一个初始 commit 否则 clone 会报错
  # 为了方便,我们在另一个临时目录 init 然后 push 过来
  TMP_INIT="/tmp/init-repo"
  rm -rf $TMP_INIT
  mkdir -p $TMP_INIT
  cd $TMP_INIT
  git init
  echo "# Mock Repo" > README.md
  git add .
  git commit -m "Initial commit"
  git remote add origin $MOCK_REMOTE_DIR
  git push -u origin HEAD:master
fi

# 2. 模拟 Remote Agent 初始化
# 实际场景:Docker 容器启动时 Clone
# 我们的 Mock Agent 直接在 /tmp/agent-workspace 工作
WORK_AREA="/tmp/agent-workspace"

echo "Setting up workspace at $WORK_AREA"
rm -rf $WORK_AREA # 清理旧环境
git clone $MOCK_REMOTE_DIR $WORK_AREA

cd $WORK_AREA

# 3. Checkout Feature Branch
BRANCH_NAME="feat/$TASK_ID"
echo "Switching to branch $BRANCH_NAME"
git checkout -b $BRANCH_NAME

echo "[Hook:Local:Checkout] Done."