我是 git 的新手,我的任务是将现有项目移动到 git 中。 我遇到的问题是它实际上是 2 个项目。 让我们称该项目为"一"。 一个实际上既是报告网站,也是单个项目使用的一组代码模板(这使报告网站能够在项目之间运行标准报告)。 我们希望在开发和报告服务器上运行报告站点,并在开发和生产服务器上使用代码模板。 因此,有时需要两个存储库,而其他时候只需要 1。一个是用这样的代码结构编写的:
/one (generic main dir, no files, only sub-dirs)
/onesource (PHP source code for the reporting site)
/onerept (reports run by the reporting site)
/onelib (templates)
/oneinc (include files used by templates)
/oneadmn (files used by both)
因此,报告站点存储库将希望包含 onesource 和 onerept 子目录,而模板存储库将希望包含 onelib 和 oneinc 目录。 如果需要,我可以将 oneadmn 目录转换为服务器之间的共享挂载。目前所有内容都设置为共享挂载,但由于多种原因,这很糟糕。
如何在 git 中设置它?
标准规则是:一起开发、版本控制和发布的所有内容都放入一个存储库中。因此,具有独立版本号的项目部分将进入其自己的存储库。
原因是 git 中的分支和标签始终是存储库范围的(与 Subversion 不同)。
按照这个规则,我会说所有东西都应该进入一个大仓库。
至于哪个服务器上需要哪些数据:你可以有一些部署过程,只复制需要的东西,或者你只是检查出所有内容。从您的问题来看,拥有所有可用的东西似乎并没有什么坏处。
无论如何,如果你在某个服务器上需要某种目录结构,那就是一个部署问题。存储库应安排用于开发,而不是部署。部署稍后进行,并具有自己的工具集。
在两个环境中使用相同的 git 存储库真的有害吗?除非有一些非技术性的政策原因导致你想要不同的存储库,否则拥有一个存储库来处理所有内容,并且只使用每个上下文中所需的存储库是没有坏处的。这是最简单的事情,并且造成的混乱最少。
其他选项包括:
1) 为每个环境创建一个单独的分支。使用相同的 git 存储库,但每个环境使用不同的分支。
2) 创建多个 git 存储库。一个用于共享部分的 git 存储库,以及用于单独部分的一个或多个其他 git 存储库;或者可能是单独部分的单个存储库,保留为不同的分支。
这是 git 不能很好地处理的一件事 - 将独立存储库的层次结构粘合在一起。我在我的一个项目中使用了第二种方法,该项目由几个顶级源存储库和一些共享模块组成。每个顶级项目都是原始项目中的一个单独分支。要处理顶级项目,我将主存储库克隆到一个新的工作目录中,然后在工作目录的"libs"子目录中克隆共享模块存储库。
这不是一个理想的方案,但它通常有效。只需要稍微有条理,并记住"libs"子目录是一个单独的 git 存储库。
在您的情况下,您可以将"onelib"和"oneinc"移动到第二个 git 存储库中,并将其克隆到一个单独的子目录中,我想称为"共享"。然后,您需要更改代码的其余部分以引用"shared/onelib"和"shared/oneinc",在这种情况下。