所以,我已经熟悉了这个:http:
//svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html
我的问题是你如何处理一个既有稳定版本又想要集成的alpha/beta分支的供应商分支?
所以,请说你按照SVN书中的原始例子.你有:
svn:// localhost/home/svn/vendor/libcomplex/current
svn://localhost/home/svn/vendor/libcomplex/1.0
svn://localhost/home/svn/vendor/libcomplex/1.1(与当前相同)
现在,假设您有两个版本的自己的'calc'应用程序:
calc(这实际上是trunk == calc 2.0)
calc-1.0(向公众发布)
假设calc-1.0使用libcomplex 1.0和calc(在trunk中)使用libcomplex 1.1,它仍在开发中.
libcomplex 1.0中存在一个错误,并发布了一个新版本来修复该错误:libcomplex 1.0.1.libcomplex维护者也将此错误修复包含在libcomplex 1.1中.
您尚未准备好发布calc 2.0,因此您需要将libcomplex 1.0.1集成到您的供应商分支中,然后更新calc-1.0以生成错误修复版本.
它去哪儿了?
你不能把它放在svn:// localhost/home/svn/vendor/libcomplex/current,因为1.1目前住在那里.
您是否将svn://localhost/home/svn/vendor/libcomplex/1.0复制到svn://localhost/home/svn/vendor/libcomplex/1.0.1然后引入新版本?这样你就可以使用svn将1.0和1.0.1之间的差异合并到calc-1.0.
推荐的做法是为您的版本创建一个分支。这样,您在主干中对供应商文件夹进行的任何更改都无关紧要。然后,您可以使用 1.0.1 版本的 libcomplex 更新 1.0 版本分支,这不会影响主干 (calc 2.0)。
然而,如果 calc 1.0 和 calc 2.0 在同一个分支中并存,则这将不起作用。
接下来要做的就是不要有“当前”。只需直接参考您正在使用的版本即可。例如,将您的文件夹结构保留为:
vendor/libcomplex/1.0
vendor/libcomplex/1.1
vendor/libcomplex/1.0.1
Run Code Online (Sandbox Code Playgroud)
并且永远不要覆盖这些文件。那么calc 2.0可以引用libcomplex的1.1版本,calc 1.0可以引用1.0.1。
您的最后一个选择(并不真正推荐)是使用 svn 标签(请参阅复杂标签)。它们允许您混合和匹配版本,因此您可以在技术上创建一个标签来表示 calc 1.0 的补丁版本与旧版本的 libcomplex。