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

Chr*_*ava 20 svn

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

\repo
  \Project1
    \branches
    \tags
    \trunk
  \Project2
    \branches
    \tags
    \trunk
  \Project3
    \branches
    \tags
    \trunk
Run Code Online (Sandbox Code Playgroud)

我想在没有branches/tags文件夹的情况下将每个项目的主干检出到我的工作区.

\workspace
  \Project1
    \trunk
  \Project2
    \trunk
  \Project3
    \trunk
Run Code Online (Sandbox Code Playgroud)

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

Jef*_*and 9

简答:不.

答案很长:请参阅http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html并在循环脚本中执行签出.

  • 我找到了一个批处理文件来自动化该过程.http://www.lostechies.com/blogs/hex/archive/2008/03/11/batch-file-to-checkout-all-root-level-project-trunks-in-a-subversion-repository.aspx (3认同)

sun*_*256 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
Run Code Online (Sandbox Code Playgroud)

并在以后更新中继:

svn up repo/*/trunk
Run Code Online (Sandbox Code Playgroud)

这适用于所有SVN客户端.如果您使用的是SVN 1.5.x版本的客户端,你也可以看看"稀疏目录",在记载稀疏目录(我不能发布链接尚未:-C),这将允许您运行" svn update"在存储库目录中.


Chr*_*ava 6

这在bash中做得非常好.请注意,我重命名了输出文件夹,以便在导入项目时使Eclipse更快乐.

for f in `svn ls http://path/to/repo`; do svn checkout http://path/to/repo/${f}trunk $f; done
Run Code Online (Sandbox Code Playgroud)