Version control 上载到文件系统的图像的版本控制

Version control 上载到文件系统的图像的版本控制,version-control,image,Version Control,Image,阅读之后,我认为文件系统是存储图像的正确位置。但我想知道您如何在不同的环境(dev/stage/prod)中处理上传映像的备份/版本控制,以及如何实现网络负载平衡 在使用数据库时,这些问题很容易处理,例如从生产环境进行备份和在开发环境中恢复数据库 您认为使用git来处理上传文件的版本控制(例如)怎么样 生产环境: 图像将上载到web服务器上的共享文件夹 元数据存储在数据库中 图像将自动添加到git存储库中 工作中的开发人员: 签出源代码 运行脚本以还原数据库 运行脚本以获取最新图像 我认

阅读之后,我认为文件系统是存储图像的正确位置。但我想知道您如何在不同的环境(dev/stage/prod)中处理上传映像的备份/版本控制,以及如何实现网络负载平衡

在使用数据库时,这些问题很容易处理,例如从生产环境进行备份和在开发环境中恢复数据库

您认为使用git来处理上传文件的版本控制(例如)怎么样

生产环境:

  • 图像将上载到web服务器上的共享文件夹
  • 元数据存储在数据库中
  • 图像将自动添加到git存储库中
工作中的开发人员:

  • 签出源代码
  • 运行脚本以还原数据库
  • 运行脚本以获取最新图像

我认为上面的解决方案对开发人员来说是非常顺利的,映像将在版本控制下,环境可以彼此隔离。

它可以工作,但我会将这些映像存储在git存储库中,然后与源代码一起使用。
这样,代码和图像之间就存在着很强的关系,即使图像是在它们自己的回购协议中。

此外,它还避免了
git-gc
git-prune
在处理大量二进制文件时效率较低的问题:如果图像在它们自己的repo中,并且每个图像的变体很少,那么对该repo的维护就相当轻松。然而,源代码repo可以更动态地发展,使用常见的git维护命令。

对我们来说,版本控制不如发行版重要。元数据是通过web管理员添加的,图像会被放到管理员服务器上。Rsync脚本将这些脚本推送到为prod映像提供服务的集群。对于dev/test,我们只需从prod主服务器rsync返回到dev服务器

rsync非常适合负载平衡和分发。如果您为admin/master服务器使用git,那么您就有了一个非常好的解决方案

如果您同意在备份时保留文件历史记录的备份(与每个版本的版本控制相反),则对其进行一些调整可能会有所帮助:
.

听起来是个好主意。“使用与源代码完全分离的存储库”:这与子模块方法并不矛盾:这个想法仍然是源代码repo引用给定的镜像repo提交,但后者(镜像repo)仍然是一个“完全分离”的repo。感谢关于git的反馈。我的第一个想法是使用一个与源代码完全分离的存储库,但子模块似乎是另一种选择。我很有信心,这将是值得运行一个峰值,看看是否有可能。感谢您的反馈,我认为分发和备份对我们来说比版本控制更重要。