OBS 支持新的分支和合并处理
2010年1月11日 | 新闻团队 | 无许可
Michael Schröder 花费了一些精力来支持 openSUSE 构建服务 (OBS) 中包的分支和合并的新方式。 这是 OBS 1.7 版本的最新功能,现在默认在 build.opensuse.org 上可用。 这种新方式几乎与 subversion 或 git 的工作方式相同。
以前的分支命令只是创建了一个“_link”文件,并将更改存储在补丁文件中。
新的机制会完整复制源代码,但仍然通过 _link 文件追踪原始版本。 差异是通过 diff3 应用程序创建的(该应用程序也由 git 使用)。
这种新方法的优点是,在某些情况下不再生成冲突,例如当主分支中的第 X 行被编辑,而你的分支中的第 X+1 行被编辑时。 以前的机制会在此处创建冲突,因为它包含在补丁中。
请注意,这仅对你的 devel 包有效,如果你重新创建包分支(例如,删除该包并调用“osc branch openSUSE:Factory $package $your_project”。 或者你使用新的 osc 0.125 beta 版本,它支持一个 “osc linktobranch” 命令,该命令只需转换服务器上的包。 你可以在 openSUSE:Tools:Unstable 项目中找到这个 beta osc 包。
虽然所有这些都类似于 git,但仍然存在差异。 当你使用 git 分支时,即使在跟踪模式下,你的分支也会一直保持在你分支时的版本,直到你调用“git pull”。 OBS 始终尝试合并最新的修订版本,其背后的原因是,我们希望看到最新合并修订版本的构建结果。 因此,“osc up”或新的检出将已经获得合并后的源代码。
然而,最新的 osc 0.125 beta 1 也支持 git 的方式。 这意味着保持在分支修订版本上,你需要调用新的命令 “osc pull” 来更新到最新代码。 你可以通过在你的 ~/.oscrc 配置文件中添加 “linkcontrol: 1” 来启用此模式。
未来将会有更多的开发在这方面进行 :)
分类: 构建服务
标签