我即将转向SVN作为我选择的RCS(使用CVS多年后)并有一个基本问题...
我有许多共享项目 - 我希望与许多不同项目一起使用的代码。是否可以将这些共享文件夹“链接”到需要它们的项目,因此签出项目还会检出共享代码?
例如,假设我的存储库看起来像这样:
根
--project1
--project2
--shared
--smtp
当我结帐project1时,我也想结帐共享和smtp。
回到我的CVS时代,我会在其中一个项目文件夹中使用Unix符号链接,但由于我的新SVN存储库不一定托管在Unix机器上,我不能这样做。
答案 0 :(得分:11)
SVN Externals就是你想要做的。 SVN书非常详细地解释了它here。这是我喜欢SVN的一件事,非常棒的文档。
答案 1 :(得分:2)
您正在寻找“svn:externals”属性。请参阅svnbook的this部分:
在要使用共享项目的项目下,然后在名为“svn:externals”的目录上设置属性。此属性包含包含外部存储库的目录的名称,并且可以具有一些其他选项,以便始终获得相同的修订。
示例(来自svnbook,这是svn问题的优秀参考):
$ svn propget svn:externals calc
third-party/sounds http://svn.example.com/repos/sounds
third-party/skins -r148 http://svn.example.com/skinproj
third-party/skins/toolkit -r21 http://svn.example.com/skin-maker
在此示例中,将从http://svn.example.com/repos/sounds检出第三方/声音。 -rNNN将checkout固定到修订版本,这样如果您正在进行更多开发,则可以确保其他项目不会随机中断。通常不是做这个修改的东西,而是外部的标签,它包含一个稳定的版本。
答案 2 :(得分:0)
这就是svn“Externals”的用途。
答案 3 :(得分:0)
是的,请查看SVN Externals。
答案 4 :(得分:0)
是的,这种机制被称为“外部”。请参阅the book。
答案 5 :(得分:0)
SVN有一个名为“externals”的功能,其基本上与符号UNIX链接的工作方式相同(您将存储库中某个位置的某个目录指向存储库中其他位置的其他目录)。
有关如何设置外部的更多信息,请参阅: http://svnbook.red-bean.com/en/1.0/ch07s03.html
希望有所帮助。