如何开始使用svn:externals?

我正在寻找一个关于使用svn:externals的简洁和写得很好的教程。

我已经知道如何以一种基本的方式使用它们,但是我想要回答最近出现的这样一个问题时可以链接到的一篇好文章:

如何处理多个项目取决于相同的来源?

我会自己做,但我不经常使用它们,不想让我的脖子出来,写一个教程。 Google对这个话题毫无帮助。

以下是关于它在svnbook / TortoiseSVN手册中的一些部分:

这是svn:externals的svnbook页面。 这是关于这个问题的最有用的资源。

这个解释了在工作stream中包含子项目的四种方法(并且在这个过程中丢失了第五个:符号链接)。

最后一个是关于如何导入存储库中的东西(不直接与svn:externals相关)的TortoiseSVN特定页面。

如果从上面提供的链接不清楚,你设置svn:externals属性绑定到一个特定的修订(pinning),这里是:

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

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

有一个红豆的文章build议使用propedit因为svn:externals可以是一个多行的值。 上面的例子将被改变如下使用propedit

 svn propedit svn:externals extras 

然后,您将为每个外部链接添加一行,其格式如上所示。

 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 

第2步

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

像这样: ln repo1/proj/base/client repo2/proj/base/client

第三步:

 export SVN_EDITOR=vim 

步骤4

 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