2008-12-10 45 views
0

我对集市(主要用于cvs,然后是颠覆,以及在我目前的工作中我们使用SourceUnsafe)相对来说比较陌生。我现在的开发环境的结构是这样的:现在在分布式版本控制系统(bazaar)中开发一个库

 
\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中必须做进去。

回答

0

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

+0

好吧,库会有自己的解决方案,但是在project1中,它将具有UI的.csproj和库的.csproj。问题出在哪里。 – FryGuy 2008-12-11 01:57:27

1

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

在此之前,将库作为​​一个独立的项目维护在一个非常干净的“分支”中。如果您需要包含在项目中的库(例如其文件位于项目自己的树中),则将其复制。如果您要对该库中的文件进行任何更改并将其返回库中,请将这些更改返回到该库的本地分支中,然后在其中进行合并/提交。

相关问题