1

我们有一个企业应用程序,我们将 git 用于 scm。此外,这个项目的基础是我们的开源工具,一个公共 git repo。

如果您是企业客户,则安装过程 a) 安装开源工具 b)在同一目录结构中的开源工具之上安装企业功能。

对于部署,这很好。对于开发来说,这是一场噩梦。

有没有办法让两个复杂的、重叠的项目在同一个结构中?我不明白怎么做,但我想我会问。

现在我已经这样设置了:

  • 一个目录中的开源工具
  • 企业代码在另一个
  • 将企业“安装”(通过符号链接)到开源目录中的脚本,以便我可以开发/运行/测试

这就是问题所在,在我提交开源 repo 更改之前,我必须“卸载”企业,这样我才能清楚地看到更改。(或者管理一个包含数百个条目的 .gitignore)真是太痛苦了。

大型项目也... 25 多个模块,以及与企业版一起复制的一百多个文件。许多软件包甚至在企业中都有额外的模块。

有什么想法,或者我是否已经做到最好了?

4

2 回答 2

3

Git 子模块允许您保留不相交的 git 项目,但在另一个项目中使用。在您的情况下它可能很方便,因为您可以随意修改开源工具,同时保持企业版本指向开源工具的特定版本。当您想将企业升级到更新的提交时,这也很容易!

这是一个很好的资源

于 2013-02-28T22:49:23.497 回答
0

您可以做的另一件事是将开源项目作为单独的分支添加到您的 git 项目中。

然后,开源项目的开源 git 存储库将在您的 git 项目中显示为一组分支。然后,您可以通过合并将其合并到您的项目中。

由于 git 是一个分布式版本系统,这很容易做到:

#Add the open source repo as a remote
git remote add -f open_source_git <url to open source git repo>
#Create a local branch to track the remote branch
git branch open_source_master open_source:master
# Combine the two projects
git merge open_source_master

open_source_master 分支在那里,因此您可以轻松地更新和跟踪开源存储库,使其不使用您自己的存储库。

于 2013-03-01T13:34:45.837 回答