如何从同一个存储库中查看多个项目的中继?

时间:2009-05-18 19:51:40

标签: svn

我们有一个包含多个相关项目的SVN存储库。像这样......

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

我想在没有分支/标签文件夹的情况下将每个项目的主干检出到我的工作区。

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

有没有办法在不单独检查每个主干的情况下执行此操作?

9 个答案:

答案 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签出。 放置您的网址,然后点击"选择项目"按钮。 使用复选框选择要包含的子文件夹。