我们正在使用VisualSVN从SourceGear Vault切换到TortoiseSVN,以进行Visual Studio集成-绝对喜欢它。但是,我们在多个不同的应用程序中引用了多个类库,这些库不是任何应用程序中工作副本根目录的一部分。最好的解决方法是什么,以便我们可以继续利用Visual Studio集成,但仍将各种类库保留在每个项目/应用程序的根目录之外? SourceGear对此没有问题。
可以仅在资源管理器中使用TortoiseSVN单独添加类库,但是无法从Visual Studio中将更改提交到工作副本之外的任何内容。在工作副本类库之外,都没有VisualSVN“交通灯”指示这些状态。
顺便说一句,相对于多个存储库,我们还将采用“一个包含多个项目的存储库”路线,尤其是因为这是我们迄今为止工作了多年的方式。
更新:
我重新阅读了一些以前看过的东西,发现svn:externals不仅指在不同存储库中使用代码,还可以用于在VisualSVN中使用多个工作副本。
参见http://www.visualsvn.com/support/topic/00007/和http://svnbook.red-bean.com/en/1.2/svn.advanced.externals.html
但是,这是处理此问题的最佳方法吗?有一个good thread可以解决所有问题,但不能完全解决问题。
因此,是否使用svn:externals?是否使用多个存储库?同样,多年来,我们已经在多个解决方案/应用程序之间的共享类库中引用了该代码,这对我们有用。现在,如何最好地利用VisualSVN进行此项工作?
最佳答案
找到了最佳答案here:
引用项目
有时,构造由许多不同的 check out 件组成的工作副本会很有用。例如,您可能希望不同的子目录来自存储库中的不同位置,或者可能完全来自不同的存储库。如果希望每个用户都具有相同的布局,则可以定义svn:externals属性。
和here:
包括一个共同的子项目
有时,您可能想在工作副本中包含另一个项目,也许是一些库代码。您不想在存储库中重复此代码,因为那样您将失去与原始(和维护的)代码的连接。或者,也许您有几个共享核心代码的项目。至少有3种处理方式。