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

使用git svn clone克隆非标准SVN布局的正确命令咨询

问题分析与修正命令

错误原因

你犯了两个关键错误:

  1. 基础URL与路径参数冲突:你指定的克隆URL是http://mysvn/svn/repo/hcp/trunk/project1,同时设置--trunk=hcp/trunk/project1,导致git svn尝试在该子路径下再次拼接hcp/trunk/project1,形成不存在的路径/hcp/trunk/project1/hcp,触发文件找不到的错误。
  2. 分支/标签路径未匹配项目范围:直接指定--branches=hcp/branches会拉取所有分支,但你需要的是与project1关联的分支和标签(或分支中属于project1的内容)。

正确命令(分两种场景)

场景1:分支/标签按项目分目录存储

如果SVN中project1的分支和标签单独存放在子目录下(如hcp/branches/project1/、hcp/tags/project1/),直接使用以下命令:

git svn clone --trunk=hcp/trunk/project1 \
    --branches=hcp/branches/project1 \
    --tags=hcp/tags/project1 \
    --authors-file=authors.txt \
    http://mysvn/svn/repo project1

场景2:分支/标签是全局trunk的快照

如果分支是整个trunk的完整快照,但你只需要提取其中project1的内容,需要用--include-paths过滤路径,之后调整仓库目录结构:

  1. 克隆并过滤内容:
git svn clone --trunk=hcp/trunk \
    --branches=hcp/branches \
    --tags=hcp/tags \
    --include-paths="^hcp/(trunk|branches/[^/]+|tags/[^/]+)/project1" \
    --authors-file=authors.txt \
    http://mysvn/svn/repo project1
  1. 进入仓库,将project1内容移到根目录(使用git filter-repo替代旧的filter-branch,需提前安装):
cd project1
git filter-repo --subdirectory-filter hcp/trunk/project1

验证

克隆完成后,执行git branch -a和git tag即可看到对应的分支和标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:23:20