0

我对 bazaar 比较陌生(主要使用 cvs,然后是 subversion,在我目前的工作中,我们使用的是 SourceUnsafe)。我当前的开发环境结构如下:

\dev(共享存储库)
  \树干
    \project1(分支)
    \project2(分支)
  \分支
    \proj1-bugfix123(\trunk\project1 的分支)
    \proj1-featureA(\trunk\project1 的分支)

现在,如果我决定 project1 的某些方面更适合作为库(或程序集,因为它是 ac# 项目)而不是项目内的类,那么在 bazaar 中构建它的最佳方法是什么。我提出了两种我认为可行的可能性。第一个我认为是“正确”的方式。

\dev(共享存储库)
  \树干
    \project1(分支)
    \project2(分支)
    \libXXX
  \分支
    \proj1-bugfix123
      \main(\trunk\project1 的分支)
      \libXXX(\trunk\libXXX 的分支)
    \proj1-featureA
      \main(\trunk\project1 的分支)
      \libXXX(\trunk\libXXX 的分支)

这样做的问题是,现在我需要记住在创建分支时更新解决方案文件以包含正确的项目并且不要将其推回,并且还要记住将更改同时推回项目和库时间(例如,如果 project1 中的 featureA 需要更改 libXXX 才能工作)。

\dev(共享存储库)
  \树干
    \project1(分支)
    \project2(分支)
      \libXXX
  \分支
    \proj1-bugfix123(\trunk\project1 的分支)
      \libXXX
    \proj1-featureA(\trunk\project1 的分支)
      \libXXX        

这种方法的问题在于,如果另一个项目,比如 project3 想要使用 libXXX 并处于源代码控制中,则它需要是 project1 的一个分支,并删除了 project1 文件。会很乱。

我想还有第三种选择让整个主干成为一个分支,就像在颠覆中一样,但这似乎与我认为它们应该在集市上工作的方式背道而驰。

如果这是在 SourceSafe 中完成的,我会像第二个示例那样做,但在两个地方都有 libxxx 文件夹,但要共享,因为这是 sourcesafe 必须这样做的唯一机制。

4

3 回答 3

3

bzr 中还没有简单的解决方案。您需要嵌套树支持,但它尚未实现 ( http://bazaar-vcs.org/NestedTreeSupport ),但可能很快就会实现。

有一个名为 config-manager ( https://launchpad.net/config-manager ) 的旧工具。

还有一个名为 scmproj ( https://launchpad.net/bzr-scmproj ) 的 bzr 新插件,它现在是 alpha 版并且正在积极开发中。

于 2009-02-12T21:05:53.710 回答
1

直到 Bazaar 中的嵌套树支持得到修复,或者 Bazaar 开发了类似于 Subversion 'Externals' 的东西(如果我理解正确的话),您将库包含到 Bazaar 分支的树中的灵活性是有限的。

在那之前,将库作为​​一个单独的项目维护在它自己的一个干净的“分支”中。如果您需要项目中包含的库,例如其文件位于项目自己的树中,则将它们复制过来。如果您对该库中的文件进行了任何更改,并希望将这些更改回馈给该库,请将更改带回该库的本地分支并在那里合并/提交。

于 2009-02-28T12:27:43.093 回答
0

您是否不希望任何新库拥有自己的解决方案并作为其中的一部分构建,然后被其他项目引用。这样库就只有一个版本正在构建(而不是每个解决方案一个)

于 2008-12-11T00:18:51.287 回答