这个问题似乎出现频率不高,但遗憾的是我还没有找到可以完全适用于我的情况的答案,所以我想我会问自己的问题。这是我关于 SO 的第一个问题,所以很好。 :P
“问题”: 我们公司开发了多个 PHP 应用程序,但是其中一个应用程序是各种“大师”。我们所有的其他应用程序都安装在这个“主应用程序”中,并且需要主应用程序才能工作。
当然,我们使用版本控制来管理这些应用程序。
虽然我们插件应用程序中的许多文件都在子目录中,但并非所有文件都是。这意味着我们不能使用子目录导入(svn 外部、git 子模块等)。例如,在根文件夹中有几个文件夹(admin、public、kernel 等),附加应用程序在这些文件夹中的一个或多个文件夹中有文件——它们不是独立地自包含在主应用程序的目录结构中.
我们目前使用 SVN,并且最近发现我们正在考虑使用 git,因为我们认为一些可用的功能可能对我们有用。然而,我对 git 不清楚的一件事是,当开发人员处理代码时,是否真的有一种方法可以将这些存储库“merge ”(不是在版本控制意义上)到本地的单个目录中。我也没有找到使用 SVN 执行此操作的方法。
在理想情况下,我们的“主”应用程序会有一个存储库,其结构如下:
- /
- --文件1
- --文件2
- --/admin
- ----文件1
- ----文件2
- --/公共(public)
- ----文件1
我们的插件应用程序将具有如下结构(请记住,我们有多个插件应用程序):
- /
- --文件名
- --/admin
- -----/我的应用
- ------文件1
- ------文件2
- --/公共(public)
- ----文件x
我们已经尝试了以下方法,每种方法都有自己的注意事项:
- 所有应用程序都在一个存储库中。这不太理想,因为它成为有效管理每个应用程序版本的噩梦(尤其是在 SVN 中)。分支和标记从不相关和独立的应用程序中获取文件。
- 所有应用程序都在一个单独的存储库中。这也不理想(好吧,从管理/组织的角度来看),因为您不能将两个单独的存储库导出到一个文件夹,因此您总是处理一个存储库的 check out 和其他存储库的导出。如果您正在处理应用程序 X 并且我们的主应用程序发生了变化,您需要手动执行该主应用程序的新导出并将文件复制到您正在处理的应用程序 X 存储库以获得最新的框架代码。
git 或 SVN(或与此相关的任何其他版本控制系统)是否有任何方法可以在不使用子目录的情况下允许单个目录中有多个存储库? SVN externals 近乎完美,但要求外部存储库中的所有文件都在单独的子文件夹中,如上所述,这对我们不起作用。我收集到 git 具有相同的功能,但同样不能在一个文件夹中允许多个存储库,这给我们留下了同样的问题。
相关问题: Multiple repositories in one directory (same level) - is it possible? - 这与我想问的非常接近,但我没有看到任何我认为可以应用于我们的情况的解决方案。
最佳答案
我从来没有尝试在生产环境中做这样的事情,但你当然可以这样做:
$ git init $ mv .git .git1 $ git init $ mv .git .git2 $ export GIT_DIR=.git1 # do work in first repo $ export GIT_DIR=.git2 # do work in second repo
关于git - 一个目录中的多个存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8682688/