带有大文件的git

带有大文件的git

形势

我有两个服务器,生产和开发。在生产服务器上,有两个应用程序和多个数据库(MySQL),我需要分发给开发人员进行测试。所有源代码都存储在GitLab开发服务器和开发人员只使用此服务器,无法访问生产服务器。当我们发布一个应用程序时,Master登录到产品中,并从Git中提取新版本。数据库很大(每个数据库超过5亿并在统计),我需要尽可能容易地将它们分发给开发人员进行测试。

可能的解决办法

  • 在将数据库转储到单个文件的备份脚本之后,执行一个脚本,该脚本将每个数据库推送到自己的分支。如果开发人员想要更新他的本地副本,他会提取其中一个分支。

    这个被发现不起作用。

  • 生产服务器上的Cron每天保存二进制日志,并将它们推入该数据库的分支。因此,在分支中,有每天变化的文件,开发人员提取他没有的文件。当前的SQL转储将以另一种方式发送给开发人员。当存储库的大小变得太大时,我们将向开发人员发送全部转储,并刷新存储库中的所有数据,并从一开始就开始。

问题

  • 解决方案可行吗?
  • 如果git正在推送/拉到/从存储库,它是上载/下载整个文件,还是只是对它们进行更改(即添加新行或编辑当前文件)?


拉丁的传说
浏览 518回答 3
3回答

忽然笑

您真的非常不希望大型二进制文件被检入Git存储库。您添加的每一个更新都将累加到存储库的总体大小,这意味着您的Git回购将需要越来越长的时间来克隆和使用越来越多的磁盘空间,因为Git存储在本地的分支的整个历史记录,这意味着当有人签出分支时,他们不仅需要下载数据库的最新版本;他们还必须下载所有以前的版本。如果需要提供大型二进制文件,请分别将它们上载到某个服务器,然后签入带有URL的文本文件,开发人员可以在其中下载大型二进制文件。FTP实际上是更好选项,因为它是专为传输二进制文件而设计的,尽管HTTP可能更简单。
打开App,查看更多内容
随时随地看视频慕课网APP