You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一测试服务器下同一项目bare与non-bare仓库同步配置方案咨询

现有方案实现步骤

你提到的新增non-bare仓库的方案是可落地的,具体操作如下:

  1. 克隆bare仓库为non-bare仓库
    在测试服务器执行命令:
    git clone /home/serveruser/project.git /home/serveruser/project-test
    路径可根据实际需求调整,确保测试人员对该目录有读取和执行权限即可。
  2. 配置自动同步逻辑
    修改bare仓库的post-receive钩子(你原有写入/var/www/html/project的逻辑可以保留,不需要删除),新增以下内容:
# 切换到non-bare仓库目录,切换失败直接退出
cd /home/serveruser/project-test || exit 1
# 清除钩子默认带入的GIT_DIR环境变量,避免操作路径错误
unset GIT_DIR
# 拉取bare仓库所有最新分支的更新,不改变当前工作区的checkout状态
git fetch --all

配置完成后,只要有开发人员向bare仓库推送代码,non-bare仓库就会自动同步所有分支的最新代码,测试人员可以直接进入该目录执行git checkout 分支名切换到任意需要测试的分支。
3. 权限配置
不要给测试人员分配non-bare仓库目录的写入权限,避免测试人员在目录内直接修改代码或提交,导致后续同步失败,所有代码变更统一走开发向bare仓库推送的流程即可。

更优实现思路

上述方案已经可以满足需求,如果你想要更高效的测试流程,可以参考以下优化方向:

  • 多分支并行自动部署:不需要测试人员手动切换分支,在post-receive钩子中新增逻辑,识别所有推送的分支,自动将每个分支的代码拉取到独立的测试目录,比如/var/www/test/[分支名],可以配合Nginx配置分支名对应的二级测试域名,测试人员直接访问对应地址即可测试,不需要登录服务器操作。
  • 接入轻量CI流程:如果团队规模稍大,不想手动维护钩子逻辑,可以在测试服务器部署轻量Git服务+CI runner,所有分支推送后自动触发部署流水线,除了部署代码外还可以自动执行单元测试、语法检查等前置校验步骤,测试人员可以直接看到每次推送的校验结果和测试地址,流程更规范。
  • 保留原有生产发布逻辑:你原本从bare仓库推送master到生产服务器的流程不需要调整,两套逻辑互不影响。

内容的提问来源于stack exchange,提问作者user2399035

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:15:05