【问题标题】:Pulling/Pushing/Merging changes up a branch with Bazaar拉/推/合并使用 Bazaar 更改分支
【发布时间】:2012-04-11 09:26:00
【问题描述】:

我目前正在尝试使用 Bazaar,试图找到一种适合我目前正在与开发团队合作的项目的配置。我们的模型目前是中心化的,但如果我能看到显着的好处,我愿意说服改变这一点。尽管提倡,但我将无法更改版本控制系统……有些人不知道对他们有什么好处。

目前,项目分为层级。它是一个 Web 项目,由数据访问层、业务/域逻辑层和 Web 层(以及一堆其他应用程序级项目,例如位于域中的服务)组成。

目前我找到了一个集市存储库,里面有许多工作树,我提到的每一层都有一个。

问题第 1 部分

有没有更好的替代方法来在每一层的存储库中使用工作树?

我的考虑

  • 将所有内容放入一个粗大的分支/工作树中(有人告诉我这是故意避免的,因为需要检查所有内容)。开发人员通过检查多个存储库的子集来创建自己的本地设置。例如,如果我正在处理其中一项服务,我会将服务、业务层和数据访问层签出到本地目录。不过,在当前设置中,我可以签出一个不影响其他任何内容的顶级应用程序,对其进行更改并将其提交回来,而无需检查整个存储库,其大小接近 1GB。

我想要解决的问题

  • 问题实际上是我的 Web 层依赖于 业务层又依赖于数据访问层。 像这样组织的项目,我不知道哪个版本的 对于给定的提交,业务和数据访问层是最新的 在 web 层上。这对我来说感觉非常糟糕。我希望能够 相对于某个提交的我们应用程序的结帐版本 的工作树。目前我们正试图跟踪 这在所有带有标记的工作树中,但感觉 对我来说非常错误。

问题第 2 部分

如果我为发布分支分支其中一个层,并发现分支根目录中的更改需要在该版本中进行,我如何仅将那些需要的更改推送到分支中?

因此假设每个项目都存在一个工作树的结构(或者可能是一个真正的分支),我们希望每个项目都有一个分支,其中包含特定版本的版本。所以网站树有一个 website_rls1 分支,它封装了该特定版本的开发状态。后续版本的一般开发将同时进行。因此,如果多个文件中的一个恰好与此版本相关,我想将该单个文件合并到我的发布分支中。这样做的首选方法是什么。据我了解,Bazaar 不支持合并/拉取单个文件。

我的考虑:

  • 只需将我想要的文件放入发布分支的本地签出并提交

我想解决的问题:

  • 考虑到这一点,该文件的版本信息将被取消。我想保持版本信息完整,但只合并更改的子集。我基本上想将单个文件推送到子分支,或者类似的东西。

任何想法表示赞赏。

【问题讨论】:

    标签: bazaar


    【解决方案1】:

    #1 有两个插件用于管理多个依赖的 bzr 存储库:

    1. https://launchpad.net/bzr-externals
    2. https://launchpad.net/bzr-scmproj

    他们有不同的方法,适合不同的情况。

    您可能还想考虑在构建级别解决此问题。使用像 Jenkins 这样的持续集成系统和像 Ivy 或 Maven 这样的依赖解决系统。 QA 应该使用来自该系统的自动构建来完成,以便提交的错误可以引用特定的构建号,该构建号应该在其日志中包含用于生成该构建的各种依赖项的版本。


    #2 没有真正的方法来进行这种合并。 Bazaar (还)不跟踪cherry-pick 合并。更好的方法是在发布分支中进行原始修复,然后将其合并回其父级。

    【讨论】:

    • 我想我真正想要的#1 是嵌套树。 wiki.bazaar.canonical.com/NestedTreesDesign - 虽然目前还不支持。我认为我们的持续集成过程可以帮助解决这个问题。对于#2 - 是的,应该在正确的分支中进行原始修复,我担心的是在一个分支中进行的更改可能需要再过几周再进行。如果该分支恰好上升,我将丢失所有这些信息。但是,是的,我认为你是对的,无法完成合并。
    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 2022-11-16
    • 2014-10-15
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    相关资源
    最近更新 更多