VisualSVN和类库不在工作副本根目录中

时间:2020-03-06 15:00:10  来源:igfitidea点击:

我们正在使用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

但是,这是处理此问题的最佳方法吗?有一个贯穿所有事物的好线程,但是并不能完全解决问题。

因此,是否使用svn:externals?是否使用多个存储库?同样,多年来,我们在多个解决方案/应用程序之间引用了共享类库中的代码,这对我们有用。现在,如何最好地利用VisualSVN进行此项工作?

解决方案

在这里找到了最佳答案:

参考项目

有时,构造由许多不同的检出件组成的工作副本会很有用。例如,我们可能希望不同的子目录来自存储库中的不同位置,或者可能完全来自不同的存储库。如果希望每个用户都具有相同的布局,则可以定义svn:externals属性。

和这里:

包括一个共同的子项目

有时,我们可能想在工作副本中包含另一个项目,也许是一些库代码。我们不想在存储库中重复此代码,因为那样我们将失去与原始(和维护的)代码的连接。或者,也许我们有几个共享核心代码的项目。至少有3种处理方式。