git-local-checkout.sh
1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/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."