但是我们的产品是源代码,我们使用的脚本语言不需要编译或处理,因此Git历史成为部署的负担-在我们的示例中,我们部署了干净的虚拟环境每次更改后,都可以在一台计算机上进行多次部署。
有一些方法可以减少历史记录的数量,例如浅克隆,其效率取决于分支中修订的深度,获取而不是克隆,但是您仍然可以从修订版本中获取历史记录,也可以从中获取历史记录,或者一次获取完整的存储库,然后在需要时提取,但是这在磁盘空间方面是浪费的,并且可靠性较低。
有没有办法从Git获得单个修订版本而不提供其历史记录?
#1 楼
浅克隆您确实可以使用以下方法从Git中获得浅克隆:
git clone --depth=1 <url>
这仍将克隆存储库并创建
.git
文件夹带有对象的对象,其大小只会更小(差异取决于总文件大小与历史记录大小)。Git归档文件
还可以使用git-archive提取存储库的存档:
创建指定格式的存档,其中包含命名树的树结构,并将其写到标准输出中。如果指定了if,则将其添加到归档文件中的文件名之前。
在示例中显示,例如:
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
为v1.4.0发行版创建压缩的tarball。
托管的Git,存档API
将回购托管在GitHub上,则可以使用其存档API:
https://api.github.com/repos/<username>/<repository>/zipball/<commit_hash>
Bitbucket.org具有相同的功能:
https://bitbucket.org/<username>/<repository>/get/<branch_name|commit_hash|tag>.zip
评论
7ochem,也许gzip命令需要是gzip -c...。
–罗密欧·尼诺夫(Romeo Ninov)
17 Mar 7 '17 at 18:16
#2 楼
不要部署您的git repo。开发实际的部署方法。即使只是简单地将已部署脚本的存档(=将要部署的文件构建为工件)放在一起也是如此。即使您浅克隆了源存储库的技巧,您可能在部署的环境中不需要单元测试,文档,lint配置文件和其他支持的临时工具。
注意:对于没有真正“构建”步骤的脚本语言存储库,发布工件的简单方法是将它们打包在一个档案中,例如tar或rpm。然后,要“部署”,请解压缩归档文件或安装rpm。这样就无需在部署链中使用git工具(并非所有prod服务器都将具有那些dev工具)。
评论
可以问(甚至挑战!)一个答案-这就是Stack Exchange出色的原因:)对于实际上没有“构建”步骤的脚本语言存储库,发布工件的简单方法是打包将它们保存在存档中,例如tar或rpm。然后,要“部署”,请解压缩归档文件或安装rpm。这样就无需在部署链中使用git工具(并非所有产品服务器都将具有那些dev工具)
– RubyTuesdayDONO
17年7月7日在19:30
@ Pierre.Vriens是的,您错过了建议归档存档时的建议,即构建一个仅包含要部署的必需文件的工件。就是说,我同意这不是一个高质量的答案,这一点应该扩大。我们处于私人测试阶段,答案应明确
–滕西拜
17年7月7日在19:32
然后,我看不到这会带来比接受的答案更多的东西,如果要指向适合的档案...这只是多余的,您应该编辑以这种方式扩展iMHo
–滕西拜
17年7月7日在19:34
请检查我对您的答案的编辑(仅整合您的有趣评论)。当然,可以随时进行改进/重做;如果根本不喜欢我的编辑,则可以回滚。顺便说一句:您的评论(=我添加的注释)使我想到“真的,那么简单吗?再次是我们如何在zOS中完成事情的示例... z零停机时间...”。我认为是时候开始通过类似的评论来质疑更多的问题/答案了...不要挑战我太多...
– Pierre.Vriens♦
17 Mar 7 '17 at 19:38
我不声称这是一个完整的或模型化的答案,但我没有看到其他人在房间里对大象讲话:如果您使用git“部署”您的项目,那么您“将经历一段糟糕的时光” ;)
– RubyTuesdayDONO
17年7月7日在19:40
#3 楼
问题是有没有办法从Git获得单个修订版本而没有它的历史吗?
要获得存储库,没有没有办法,主要是因为没有“修订”。 Git存储库提交,这是对先前状态的更改。
如果您想在特定时间点存储库,则必须在此时拖出提交及其所有祖先的提交,否则您将只获得在Git存储库中所做的更改。承诺。
为避免混淆:浅克隆是获取所需的历史记录,然后将其截断为可用空间,该树仍由历史记录构成。
对于解决方案,@ 7ochem回答确实覆盖了它们。
评论
有关问题,请访问SOstackoverflow.com/questions/26135216/…