我正在开发一个Java遗留项目,它有20个模块相互连接.因此,每个模块都有自己的分支和标记.结构是这样的:
/projects
.svn
- module1
.svn
-trunk
-branch
-tag
- module2
.svn
-trunk
-branch
-tag
projects文件夹大约30 GB,几乎不可能用于git-svn clone签出所有模块,但这是因为它计算所有分支和标签.
是否可以只克隆项目中继,以便我可以开始在本地提交?
me_*_*and 58
编辑:我误解了这个问题并回答了我的想法,而不是你实际问的问题.
克隆单个Subversion目录很简单,实际上克隆哪个目录无关紧要.只是不要指定任何"layout"参数,并直接给出trunk的路径:
git svn clone http://path.to.svn.repo/module1/trunk
Run Code Online (Sandbox Code Playgroud)
"正常" git svn clone看起来如下所示:
git svn clone --stdlayout http://path.to.svn.repo/
Run Code Online (Sandbox Code Playgroud)
因此,你想要使用的是:
git svn clone --stdlayout http://path.to.svn.repo/module1/
Run Code Online (Sandbox Code Playgroud)
这会发现trunk,branch和tag该的子module1文件夹,并复制它们.
Dew*_*ser 13
我发现使用--stdlayout的git svn clone并没有为我做正确的事情.
在同样的情况下,这种策略运作良好:
git svn init --trunk $repo/projects/module1/trunk --tags $repo/projects/module1/tag --branches $repo/projects/module1/branch git svn fetch
我只是想根据@me_and 的回答添加更多信息。
克隆 trunk 的命令可以工作,但在 git 文件夹中创建的结构是:
refs
|--remotes
|--git-svn
Run Code Online (Sandbox Code Playgroud)
这相当于refs/remotes/git-svn。
如果我们这样做:
git svn clone https://domain/svn/repo/trunk --no-metadata --authors-file=authors.txt --trunk=https://domain/svn/repo/trunk
Run Code Online (Sandbox Code Playgroud)
那么创建的结构是:
refs
|--remotes
|--origin
|--trunk
Run Code Online (Sandbox Code Playgroud)
相当于refs/remotes/origin/trunk
第二种结构看起来对 git 更友好,并且可能会减少您必须编写的命令和 shell 脚本:)
PS [--no-metadata] 和 [--author-file] 参数是可选的。