我对 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 必须这样做的唯一机制。