一个目录中有多个存储库

bfa*_*ber 6 svn git

这是一个似乎半频繁出现的问题,但遗憾的是我还没有找到一个我可以完全适用于我的情况的答案,所以我想我会问自己的问题.这是关于SO的第一个问题,所以要好.:P

"问题": 我们公司开发了多个PHP应用程序,但其中一个应用程序是各种"主".我们所有的其他应用程序都安装在这个"主应用程序"中,并且需要主应用程序才能工作.

当然,我们使用版本控制来管理这些应用程序.

虽然我们的插件应用程序中的许多文件都在子目录中,但并非所有文件都在子目录中.这意味着我们不能使用子目录导入(svn externals,git子模块等).例如,在根文件夹中有几个文件夹(admin,public,kernel等),addon应用程序在一个或多个这些文件夹中有文件 - 它们不是独立自包含在主应用程序的目录结构中.

我们目前使用SVN,最近发现自己正在考虑git,因为我们认为可用的一些功能对我们有用.然而,我不清楚使用git的一件事是,如果真的有一种方法可以在开发人员处理代码时将这些存储库"合并"(不是在版本控制意义上)本地存储到一个目录中.我还没有办法用SVN做到这一点.

在理想的世界中,我们将为我们的"主"应用程序提供一个存储库,其结构如下:

  • /
  • --file1
  • --file2
  • - /管理员
  • ----文件1
  • ----文件2
  • - /上市
  • ----文件1

我们的插件应用程序将具有这样的结构(请记住,我们有多个插件应用程序):

  • /
  • --filex
  • - /管理员
  • ----/MYAPP
  • ------文件1
  • ------文件2
  • - /上市
  • ---- FILEX

我们已经尝试了以下方法,每个方法都有自己的注意事项:

  1. 单个存储库中的所有应用程序.这不太理想,因为它成为每个应用程序有效管理版本的噩梦(特别是在SVN中).分支和标记从不相关和单独的应用程序中获取文件.
  2. 所有应用程序都在单独的存储库 这也不理想(好吧,从管理/组织的角度来看),因为您无法将两个单独的存储库导出到单个文件夹,因此您始终使用一个存储库的签出和其他存储库的导出.如果您正在处理应用程序X并且主应用程序中有更改,则需要手动执行该主应用程序的新导出,并将文件复制到您正在使用的应用程序X存储库以获取最新的框架代码.

有没有办法使用git或SVN(或任何其他版本控制系统)在单个目录中允许多个存储库而不使用子目录?SVN外部几乎是完美的,但要求外部存储库中的所有文件都在一个单独的子文件夹中,如上所述,这对我们不起作用.我收集git具有相同的功能,但同样不能在一个文件夹中允许多个存储库,这给我们带来了同样的问题.

相关问题: 一个目录(同一级别)中的多个存储库 - 是否可能? - 这与我想的非常接近,但我没有看到任何我认为可以应用于我们情况的解决方案.

Sco*_*ell 2

Subversion 1.6 和 1.7 允许单个文件的外部。

请参阅http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html

“Subversion 1.6 还引入了对文件外部定义的支持。文件外部的配置就像目录的外部定义一样,并在工作副本中显示为版本化文件。

例如,假设您的存储库中有文件 /trunk/bikeshed/blue.html,并且您希望该文件(如修订版 40 中所示)以 green.html 的形式出现在 /trunk/www/ 的工作副本中”。