代码之家  ›  专栏  ›  技术社区  ›  FryGuy

分布式版本控制系统(bazaar)中库的开发

  •  0
  • FryGuy  · 技术社区  · 17 年前

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

    \dev                 (shared repository)
      \trunk
        \project1        (branch)
        \project2        (branch)
      \branches
        \proj1-bugfix123 (branch of \trunk\project1)
        \proj1-featureA  (branch of \trunk\project1)
    

    现在,如果我认为project1的某些方面更适合作为库(或程序集,因为它是一个c#项目)而不是项目中的类, 在集市中构建这一点的最佳方法是什么。

    \dev                 (shared repository)
      \trunk
        \project1        (branch)
        \project2        (branch)
        \libXXX
      \branches
        \proj1-bugfix123
          \main          (branch of \trunk\project1)
          \libXXX        (branch of \trunk\libXXX)
        \proj1-featureA
          \main          (branch of \trunk\project1)
          \libXXX        (branch of \trunk\libXXX)
    

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

    \dev                 (shared repository)
      \trunk
        \project1        (branch)
        \project2        (branch)
          \libXXX
      \branches
        \proj1-bugfix123 (branch of \trunk\project1)
          \libXXX
        \proj1-featureA  (branch of \trunk\project1)
          \libXXX        
    

    这种方法的问题在于,如果另一个项目(比如project3)想要使用libXXX并进行源代码管理,那么它需要是project1的一个分支,同时删除project1文件。那会很混乱。

    如果这是在SourceSafe中完成的,我只会像第二个示例那样执行,但在两个位置都有libxxx文件夹,但它们是共享的,因为这是SourceSafe必须使用的唯一机制。

    3 回复  |  直到 17 年前
        1
  •  3
  •   bialix    17 年前

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

    有一个叫做配置管理器的旧工具( https://launchpad.net/config-manager ).

    https://launchpad.net/bzr-scmproj ),现在是alpha,正在积极开发中。

        2
  •  1
  •   thomasrutter    17 年前

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

    在此之前,将库作为一个单独的项目维护在一个整洁的“分支”中。如果您需要项目中包含的库,例如其文件位于项目自身的树中,请将它们复制到整个项目中。如果您对该库中的文件进行了任何更改,并且希望将这些更改贡献回该库,请将这些更改带回该库的本地分支,并在那里进行合并/提交。

        3
  •  0
  •   Brody    17 年前

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