0

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

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

目前,我找到了一个带有许多工作树的集市存储库,其中一个用于我提到的每一层。

问题第 1 部分

是否有更好的替代方法可以在每一层的存储库中使用工作树?

我考虑过的

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

我想补救的

  • 问题实际上是我的 Web 层依赖于业务层的一个版本,而业务层又依赖于数据访问层。对于这样组织的项目,我不知道哪个版本的业务和数据访问层对于 Web 层上的给定提交是最新的。这对我来说感觉非常糟糕。我希望能够检查我们的应用程序的版本,这些版本与对其中一个工作树的某些提交有关。目前,我们正试图通过标记在所有工作树中跟踪这一点,但这对我来说感觉很不对劲。

问题第 2 部分

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

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

我所考虑的:

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

我想补救的:

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

任何想法表示赞赏。

4

1 回答 1

2

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

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

它们有不同的方法,适用于不同的情况。

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


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

于 2012-04-11T01:26:00.867 回答