Svn 外部存储库中的代码
我有一个问题,我正在寻找一个合适的答案。我看到过太多类似的问题,但对我的处境没有任何帮助。 我有一个项目,其中有一个共同的代码库。包含一些配置文件的代码库。该代码存储在回购协议的主干中,分支在主分支目录中处理。 然后我有太多的项目使用这个代码库,配置文件中有一些更改,或者代码库目录中有一些添加的文件。我希望共同保留代码库,这样,如果任何主体在项目中更改了与代码库相关的任何内容,它将被提交回主代码,但我还希望将项目的特定文件分开,以便显然没有人会覆盖其他人的配置,或者没有人必须在其内部携带其他人的附加文件代码 当我寻找我的问题的可能答案时,我来到了externals,所以现在我的回购协议中有了这个结构:Svn 外部存储库中的代码,svn,Svn,我有一个问题,我正在寻找一个合适的答案。我看到过太多类似的问题,但对我的处境没有任何帮助。 我有一个项目,其中有一个共同的代码库。包含一些配置文件的代码库。该代码存储在回购协议的主干中,分支在主分支目录中处理。 然后我有太多的项目使用这个代码库,配置文件中有一些更改,或者代码库目录中有一些添加的文件。我希望共同保留代码库,这样,如果任何主体在项目中更改了与代码库相关的任何内容,它将被提交回主代码,但我还希望将项目的特定文件分开,以便显然没有人会覆盖其他人的配置,或者没有人必须在其内部携带其他人的
/
trunk <- code base trunk
branch <- code base branchs
projects
proj1
trunk <- project's trunk
branch <- project's branches
proj2
/
trunk我建议这种布局:
/
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
/
常见的
trunk谢谢你的建议,但由于我使用的是已经编写好的代码和框架,所以不可能将代码库和配置/专用部分分开。然后,你可以通过添加“文件外部”来外部化一个公共文件-在这种情况下,你不应该分开代码库,你只会得到你需要的文件,并将特定于项目的文件添加到projX中。您也可以在projX中使用与代码库中同名的文件,这些文件是不同的-但在我看来,这会很混乱。谢谢,无论如何,我在公共代码中有太多的文件,无法为每个文件定义外部文件,而且我还有一些来自公共代码库的文件,这些文件必须在每个项目中更改,事实上,我已经决定为每个项目使用一个分支,这样我可以更新公共代码库,然后更新每个分支,如果需要,每个分支也可以有自己的文件版本。当然,文件上有太多外部内容不是一个好的解决方案,但我也怀疑,为不同的项目设立多个分支机构是否是一个好的解决方案(合并地狱)。您应该真正地重新构造您的项目,使其具有一个可配置的(运行时/编译时)公共代码库。
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