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

如何配置TeamCity以--stream方式克隆Mercurial仓库替代init/pull?

解决TeamCity搭配Kallithea大项目克隆连接断开问题

一、配置TeamCity使用--stream方式克隆

旧版TeamCity支持自定义VCS checkout命令,按以下步骤配置即可实现:

  1. 打开目标项目的VCS根配置,进入编辑界面
  2. 在「VCS checkout mode」中选择「自定义命令」(旧版可能叫「Manually run commands」或类似选项)
  3. 替换默认的init+pull逻辑,直接使用stream克隆:
    • 若仅需首次克隆,执行命令:git clone --stream <你的Kallithea仓库地址> %teamcity.build.checkoutDir%
    • 要兼容增量更新,可编写Windows批处理脚本(适配TeamCity环境变量):
      @echo off
      set checkout_dir=%teamcity.build.checkoutDir%
      if not exist "%checkout_dir%\.git" (
          git clone --stream <你的仓库URL> "%checkout_dir%"
      ) else (
          cd /d "%checkout_dir%"
          git pull
      )
      
    • 将这个脚本设置为TeamCity的VCS checkout执行命令,注意替换实际的仓库URL

二、其他可行解决方案

  • 调整Waitress/Kallithea参数:除asyncore_loop_timeout外,试试调大Waitress的max_request_body_size(比如设为1073741824即1GB)、keepalive超时时间;在Kallithea配置文件中增加timeout = 300(延长到5分钟),或调整wsgi.max_request_line参数
  • 拆分大仓库:把项目拆分为多个子模块,或按业务模块拆分成独立仓库,降低单次克隆的数据量,从根源减少连接超时概率
  • 搭建本地镜像仓库:在TeamCity同局域网内部署Git镜像,定期从Kallithea拉取同步,TeamCity直接从本地镜像克隆,避免跨网络长连接的不稳定问题
  • 升级组件版本:如果业务允许,优先升级TeamCity和Kallithea到较新版本——旧版本的Git协议、WSGI服务器可能存在已知的连接稳定性bug,新版本通常会修复这类问题

内容的提问来源于stack exchange,提问作者The incredible Jan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:20:04