目前,我正在尝试使用相同的代码为多个产品设置存储库。最好的解决方案是创建共享代码的真正库并以这种方式使用它们。然而,目前这需要很长时间。这个想法是拥有一个具有以下树的单个存储库
-trunk-Project1
-Project2
-Shared
项目 1 和 2 都有一个外部来包含共享代码。外部指向特定修订版,以便在处理项目 1 和共享代码时不会破坏项目 2 的构建。由此就产生了一个问题。
当对共享代码进行更改并进行提交(使用 Tortoise SVN)时,项目 1 和共享代码都会拾取更改,并作为单个修订很好地提交到 SVN。但是,当我或同事进行更新时,项目将无法构建,因为 svn external 指向“旧”修订版。
这可以通过更新外部并提交它来解决(让构建在中间中断)。我们可以暂时从外部删除特定的修订版,但是当开发结束时我们必须再次添加它。有没有办法自动执行此操作?
我认为你有几个选择。首先是按照 Martin 的建议使用带有分支的单个模块。每个活动项目或开发线程都会有一个分支。当您合并回主干时,将拾取对共享代码的更改。
e.g.
Module
|
+ trunk
| + Project1
| + Project2
| + Shared
|
+ branches
|
+ Project1Development
| + Project1 [active development here]
| + Project2
| + Shared [active development here]
|
+ Project2Development
+ Project1
+ Project2 [active development here]
+ Shared [active development here]
其次,您可以分支共享,这样您就不需要将外部固定到它。这就是您的存储库中的内容
Project1
|
+ trunk [svn:external to a branch of Shared]
Project2
|
+ trunk [svn:external to a branch of Shared]
Shared
|
+ trunk
|
+ branches
|
+ Project1Development
|
+ Project2Development
每个项目都会使用自己的主干视图。这里的危险是分支变得太长 - 您需要遵守合并和删除它们的纪律,也许在每次发布之后。仅当需要对共享进行特定于项目的更改时,才应创建共享的分支。
第三,您继续像现在一样使用外部组件,并承受固定修订的痛苦。如果你这样做的话,我会重新安排你的存储库,就像上面的第二个图一样——项目中的外部内容有点味道。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)