2009-05-18 53 views
16

我们有一个单独的SVN存储库,其中包含多个相关项目。像这样......如何从同一个存储库检出多个项目的中继?

\repo 
    \Project1 
    \branches 
    \tags 
    \trunk 
    \Project2 
    \branches 
    \tags 
    \trunk 
    \Project3 
    \branches 
    \tags 
    \trunk 

我想查看每个项目的树干到我的工作区没有分支/标签文件夹。

\workspace 
    \Project1 
    \trunk 
    \Project2 
    \trunk 
    \Project3 
    \trunk 

有没有办法做到这一点,而无需单独检查每个干线?

回答

8

简答题:没有。

长答案:请参阅http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html并在循环脚本中完成结帐。

+0

不是我想听到的答案...:-(但是,感谢您提供快速准确的回复,看起来我今天会写一个脚本。 – 2009-05-18 20:07:19

+3

我发现了一个批处理文件来自动执行此过程。http://www.lostechies.com/blogs/hex/ archive/2008/03/11/batch-file-to-checkout-all-root-level-project-trunks-in-a-subversion-repository.aspx – 2009-05-18 20:40:54

+0

该批处理文件对于我们这些坚持在Windows上的用户非常有用 – pards 2013-07-08 19:02:25

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 

退房2个不同的目录分为两个单独的工作拷贝,但将两者到一个名为“工作副本”的目录中:

$ 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 
0

我怀疑你仍然必须告诉它(结帐)每个人AL干线 - 但您至少还可以使用sparse directories查看工作区(获取所有项目,以便您可以全球更新等)。

7

您可以使用-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”。

5

这在bash中很棒。请注意,我重命名输出文件夹以使Eclipse在导入项目时更加快乐。

for f in `svn ls http://path/to/repo`; do svn checkout http://path/to/repo/${f}trunk $f; done 
1

我也有需要签出SVN仓库的只是树干,所以我写了这个Windows批处理:Checkout just the trunks of a SVN repository

它检查出来的树干扁平的目录结构(如树干已经在本地存在它被更新)。请阅读关于批次的评论以获取更多详细信息。

0

发现这是工作,而不是上面的:

checkoutList.bat: 

for %%G in (projectA, projectB, projectC) do (
    echo %%G 
    mkdir %%G 
    svn co http://your.repo/path/%%G/trunk %%G 
) 
-1

右键单击文件夹 - SVN退房。 放置您的URL并点击“选择项目”按钮。 使用复选框选择要包含的子文件夹。

相关问题