3Da*_*ave 1 svn asp.net project-management
在过去的几个月里,我的一个网络应用程序从一个项目文件增长到包括几个类库.svn结构有点有机增长,看起来像这样:
repository-root
site1
trunk
tags
site2
trunk
tags
library1
trunk
tags
...
library2
trunk
Run Code Online (Sandbox Code Playgroud)
现在开发正在加速,我想有类似的东西
repository-root
site1
trunk
tags
release-20100922
site1
library1
library2
...
release-20110101
...
Run Code Online (Sandbox Code Playgroud)
现在,由于Site1
和Site2
均引用类库library1
和library2
,什么是要去关于重组的文件夹结构,这样的最佳方式
我可能只是想到这个错误.建议?
svn:外部作为模块化应用程序中的"软源控制链接".
svn:externals可以帮助您避免一些手动任务,并清楚地了解什么是什么(以及在什么版本中).
您有几种依赖于库的"独立"产品称为"站点".您的产品和库也有相应的周期.为了提高稳定性,您可能不希望在任何地方使用中继库代码,因为它可能会破坏一个而不是多个站点.另一方面,在更敏捷的方法中,可能需要"早点休息,经常休息".因此,选择在主线开发中使用的库代码版本将是一个优势.
此外,您的稳定/孵化分支(如果将来还有)可能希望与库的一个特定版本同步,以便将增强的兼容性传输到结果标记中.
我会建议以下布局:
repository-root
site1
trunk (active development, unstable)
mycode
library1 -> external of "library1/tags/2.0"
branches
2-branch (maintenance, stable)
mycode
library1 -> external of "library/tags/1.0"
tags
2.0.0
mycode
library1 -> external of "library/tags/1.0"
2.0.1
mycode
library1 -> external of "library/tags/1.0"
library1
trunk
tags
1.0
2.0
...
Run Code Online (Sandbox Code Playgroud)
当你改变主意并决定"在我们的主干中使用新的2.0库1 API是一件小事可能我们应该在将来使用主干"时,没有必要合并或移动arround库源代码.
让我们想象一下"library1 1.0"中有一个错误,所以你发布了"library1 1.1".您还需要为主应用程序创建一个新的错误修复版本并将其发布出去.所以你更新你的"site1 2.0"维护分支,测试并创建一个标签.
repository-root
site1
trunk (active development, unstable)
mycode
library1 -> external of "library1/tags/2.0"
branches
2-branch (maintenance, stable)
mycode
library1 -> external of "library/tags/1.1" (changed the property)
tags
2.0.0
mycode
library1 -> external of "library/tags/1.0"
2.0.1
mycode
library1 -> external of "library/tags/1.0"
2.0.2
mycode
library1 -> external of "library/tags/1.1" (inherits property change)
library1
trunk
tags
1.0
1.1
2.0
...
Run Code Online (Sandbox Code Playgroud)
Externals确保您可以选择要包含哪些库更改以及何时需要它.这将有助于减少"意外".
请注意,虽然svn:externals会减慢你的"svn update"命令,因为每个外部都需要检查.尽管如此,代码正在进行改进.
查看silverstripe公共存储库,了解它们的工作方式.适合他们.
svn propget svn:externals http://svn.silverstripe.com/open/phpinstaller/tags/2.4.2/
Run Code Online (Sandbox Code Playgroud)
希望我能提供帮助