Svn 如何从同一存储库中检出多个项目的主干?
我们有一个SVN存储库,其中包含多个相关项目。就像这样Svn 如何从同一存储库中检出多个项目的主干?,svn,Svn,我们有一个SVN存储库,其中包含多个相关项目。就像这样 \repo \Project1 \branches \tags \trunk \Project2 \branches \tags \trunk \Project3 \branches \tags \trunk 我想将每个项目的主干签出到我的工作区中,而不签出Branchs/tags文件夹 \workspace \Project1 \trunk
\repo
\Project1
\branches
\tags
\trunk
\Project2
\branches
\tags
\trunk
\Project3
\branches
\tags
\trunk
我想将每个项目的主干签出到我的工作区中,而不签出Branchs/tags文件夹
\workspace
\Project1
\trunk
\Project2
\trunk
\Project3
\trunk
有没有一种方法可以在不单独检查每个中继的情况下执行此操作?简短回答:没有
详细回答:在循环脚本中查看并执行签出。编辑:在下面的部分中签出
将两个不同的目录签出到两个独立的工作副本中:
$ 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
我怀疑您仍然需要告诉它(签出)每个单独的主干-但您至少还可以使用来签出工作区(以获取所有项目,并因此可以全局更新等)。您可以使用-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客户端,您还可以查看“稀疏目录”,该目录记录在(我还不允许发布链接:-C),它将允许您在存储库目录中运行“SVN更新”。这在bash中很好地实现了这一点。注意,我重命名了输出文件夹,以使Eclipse在导入项目时更愉快
for f in `svn ls http://path/to/repo`; do svn checkout http://path/to/repo/${f}trunk $f; done
发现此方法有效,而不是上述方法:
checkoutList.bat:
for %%G in (projectA, projectB, projectC) do (
echo %%G
mkdir %%G
svn co http://your.repo/path/%%G/trunk %%G
)
右键单击文件夹-SVN签出。 放置您的URL并单击“选择项目”按钮。 使用复选框选择要包括的子文件夹。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
)
不是我想听的答案…:-(但无论如何,感谢您快速准确的响应。看起来我今天要写一个脚本。我找到了一个批处理文件来自动化这个过程。批处理文件对我们这些困在Windows上的人来说非常好。您的说明是关于什么操作系统和什么工具的?乌龟?