如何开始使用svn:externals?

84

我正在寻找一篇简洁而清晰的教程,介绍如何使用 svn:externals。

虽然我自己已经知道如何基本使用它们,但我想要一篇好文章,以便在回答像这样最近出现的问题时可以链接到它:

多个项目依赖于同一源代码应该怎么办?

我可以自己做,但是我不常使用它们,不希望冒险写一篇教程。谷歌在这个主题上令人惊讶地没有提供太多帮助。

3个回答

48
以下是与 SVN 有关的一些部分,包括 svnbook / TortoiseSVN 手册:
这是有关 svn:externals 的 svnbook 页面(链接),这是该主题上最有用的资源。
这个页面(链接)解释了四种将子项目包含到工作流程中的方法(在此过程中忽略了第五种:符号链接)。
这个页面则是关于如何在存储库中导入内容的 TortoiseSVN 特定页面(与 svn:externals 没有直接关系)。

23

如果从上面提供的链接中不清楚,那么设置与特定版本(固定)相关联的 svn:externals 属性的方法如下:

svn propset svn:externals "plugins -r12345 https://svn.example.com/common/plugins" extras

这将在extras目录下创建一个名为plugins的子目录,并将其链接到外部 SVN URL https://svn.example.com/common/plugins 的版本12345

有一篇Red Bean文章建议使用propedit,因为svn:externals可以是多行值。上面的示例将更改为以下内容以使用propedit

svn propedit svn:externals extras
您可以按照与值相同的格式,为每个外部链接添加一行。

引号的定位是使propset正常工作的关键。如果没有引号,就会产生各种错误。 - cup

0
root/repo1/proj/base/common/log.c
root/repo1/proj/base/common/log.h
root/repo1/proj/base/client

root/repo2/proj/test/base

如上所示,我们想要将2个文件和1个目录复制到repo2

步骤1

目录:/home/jack/repo2/proj/

cd /home/jack

Step2

svn propset svn:externals "../repo1/proj/base/client proj/base/client" repo2

类似这样:ln repo1/proj/base/client repo2/proj/base/client

步骤3

export SVN_EDITOR=vim

Step4

svn propedit svn:externals repo2

vim 显示:

../repo1/proj/base/client proj/base/client

步骤5:添加另外两个文件

../repo1/proj/base/client proj/base/client
../repo1/proj/base/common/log.c proj/base/common/log.c
../repo1/proj/base/common/log.h proj/base/common/log.h

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接