2011-09-14 57 views
0

我有一个问题,我正在寻找适当的答案。我看过很多类似的问题,但没有什么可以帮助我解决我的问题。 我有一个项目,有一个共同的代码库。有一些配置文件说的代码库。此代码存储在回购的主干线中,分支在主分支目录中处理。 然后我有太多的项目正在使用此代码库,在配置文件中进行了一些更改,或者在代码库的目录中添加了一些文件。我想保持代码库的共同性,因此如果任何主体更改与代码库相关的项目内部的任何内容,它将被提交回主代码,但同时我也希望保持项目的特定文件分离,以便显而易见没有人会覆盖别人的配置,或者没有人需要在他的代码中携带他人的附加文件。外部存储库中的代码

至于我寻找可能的答案我的问题,我来到的外部,所以现在我有这样的结构,我的回购:

/ 
    trunk <- code base trunk 
    branch <- code base branchs 
    projects 
     proj1 
      trunk <- project's trunk 
      branch <- project's branches 
     proj2 

每个项目的主干实际上是一个外部链接的代码库的主干并且我在文件夹中做了一些更改或者更改了一些配置文件。现在我没有办法将对代码进行修改所做的一些更改分离到proj1的文件夹和其他人到主代码中。 是否有可能?我应该改变我的结构吗?

回答

0

我建议这种布局:

/ 
    common 
     trunk <- code base trunk 
     branches <- code base branches 
    projects 
     proj1 
      trunk <- project's trunk 
       common <- common trunk (external) 
       local <- proj1 specific 
      branch <- project's branches 
       common <- common branch (or trunk) (external) 
       local <- proj1 specific 
     proj2 

所以,你看,这是更好地将项目分成通用/特定部分。

UPDATE(如果拆分代码库是不可能的)

trunk <- code base trunk 
     common.h 
     common.c 
     common_folder 
    branches <- code base branches 
     br1 
      common.h 
      common.c 
      common_folder 
    projects 
     proj1 
      trunk <- project's trunk 
       common.h <- (svn:externals ^/trunk/common.h common.h) 
       common.c <- (svn:externals ^/trunk/common.c common.c) 
       common <- (svn:externals ^/trunk/common_folder common) 
       spec.h 
       spec.c 
      branches <- project's branches 
       br1 
       common.h <- (svn:externals ^/branches/br1/common.h common.h) 
       common.c <- (svn:externals ^/branches/br1/common.c common.c) 
       common <- (svn:externals ^/branches/br1/common_folder common) 
       spec.h 
       spec.c 
     proj2 

在这种情况下,事情就变得有点复杂管理...

+0

感谢您的建议,但我使用已编写的代码和框架,不可能将代码库和配置/专用部分分开。 – mohamnag

+0

然后,您可以通过添加“外部文件”来共享文件 - 在这种情况下,您不应该分开代码库,只需要获取所需文件,并将项目特定文件添加到projX中。您也可以在projX中使用与代码库中的名称相同的文件,这些文件是不同的 - 但这在我看来会很麻烦。 – pmod

+0

你的意思是在代码库中添加外部? – mohamnag