我们有一个包含多个相关项目的SVN存储库。像这样......
\repo
\Project1
\branches
\tags
\trunk
\Project2
\branches
\tags
\trunk
\Project3
\branches
\tags
\trunk
我想在没有分支/标签文件夹的情况下将每个项目的主干检出到我的工作区。
\workspace
\Project1
\trunk
\Project2
\trunk
\Project3
\trunk
有没有办法在不单独检查每个主干的情况下执行此操作?
答案 0 :(得分:9)
简答:不。
答案很长:请参阅http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html并以循环播放的方式执行结帐。
答案 1 :(得分:8)
您可以使用-N选项,它忽略子目录。您可以在第一次检查来源时运行它:
svn co -N http://path/to/repo
cd repo
for f in Project1 Project2 Project3; do
svn up -N $f
svn up $f/trunk
done
稍后更新中继线:
svn up repo/*/trunk
这适用于所有SVN客户端。如果您正在使用SVN 1.5.x客户端,您还可以查看“稀疏目录”,记录在 Sparse Directories (我不允许发布链接: - C),它允许您在存储库目录中运行“svn update”。
答案 2 :(得分:6)
这在bash中做得非常好。请注意,我重命名了输出文件夹,以便在导入项目时使Eclipse更快乐。
for f in `svn ls http://path/to/repo`; do svn checkout http://path/to/repo/${f}trunk $f; done
答案 3 :(得分:1)
编辑:请查看SVN Book以了解以下部分
将2个不同的目录分成两个单独的工作副本:
$ svn checkout file:///tmp/repos/test file:///tmp/repos/quiz
A test/a
A test/b
Checked out revision 2.
A quiz/l
A quiz/m
Checked out revision 2.
$ ls
quiz test
将两个不同的目录分成两个单独的工作副本,但将它们放入一个名为“工作副本”的目录中:
$ svn checkout file:///tmp/repos/test file:///tmp/repos/quiz working-copies
A working-copies/test/a
A working-copies/test/b
Checked out revision 2.
A working-copies/quiz/l
A working-copies/quiz/m
Checked out revision 2.
$ ls
working-copies
答案 4 :(得分:1)
我还需要只检查SVN存储库的中继,所以我写了这个Windows批处理:Checkout just the trunks of a SVN repository
它将中继检出到平面目录结构(如果主干已在本地存在则更新)。有关详细信息,请阅读批处理上的注释。
答案 5 :(得分:0)
我怀疑你仍然需要告诉它(结账)每个单独的主干 - 但你至少也可以使用{检查工作区(以获取所有项目,以便全局更新等) {3}}
答案 6 :(得分:0)
发现这是工作而不是上述:
checkoutList.bat:
for %%G in (projectA, projectB, projectC) do (
echo %%G
mkdir %%G
svn co http://your.repo/path/%%G/trunk %%G
)
答案 7 :(得分:0)
Windows批处理脚本:
@echo off
for /f %%G in ('svn ls https://path/to/main/folder/') do (
mkdir %%G
cd %%G
echo Checking out [%%G] project
svn co https://path/to/main/folder/%%Gtrunk
)
答案 8 :(得分:-1)
右键单击文件夹 - SVN签出。 放置您的网址,然后点击"选择项目"按钮。 使用复选框选择要包含的子文件夹。