Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 外部存储库中的代码_Svn - Fatal编程技术网

Svn 外部存储库中的代码

Svn 外部存储库中的代码,svn,Svn,我有一个问题,我正在寻找一个合适的答案。我看到过太多类似的问题,但对我的处境没有任何帮助。 我有一个项目,其中有一个共同的代码库。包含一些配置文件的代码库。该代码存储在回购协议的主干中,分支在主分支目录中处理。 然后我有太多的项目使用这个代码库,配置文件中有一些更改,或者代码库目录中有一些添加的文件。我希望共同保留代码库,这样,如果任何主体在项目中更改了与代码库相关的任何内容,它将被提交回主代码,但我还希望将项目的特定文件分开,以便显然没有人会覆盖其他人的配置,或者没有人必须在其内部携带其他人的

我有一个问题,我正在寻找一个合适的答案。我看到过太多类似的问题,但对我的处境没有任何帮助。 我有一个项目,其中有一个共同的代码库。包含一些配置文件的代码库。该代码存储在回购协议的主干中,分支在主分支目录中处理。 然后我有太多的项目使用这个代码库,配置文件中有一些更改,或者代码库目录中有一些添加的文件。我希望共同保留代码库,这样,如果任何主体在项目中更改了与代码库相关的任何内容,它将被提交回主代码,但我还希望将项目的特定文件分开,以便显然没有人会覆盖其他人的配置,或者没有人必须在其内部携带其他人的附加文件代码

当我寻找我的问题的可能答案时,我来到了externals,所以现在我的回购协议中有了这个结构:

/
    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