我正在采用git push来部署方法,在活动服务器上设置一个裸存储库,然后将本地更改推到该服务器上。使用一个更新后钩子,在我推送后执行,我把我的更改拉到包含活动站点的目录中。
这种方法工作得非常好,但由于我们使用的是虚拟服务器,有时磁盘空间可能是一个问题,特别是对于更大的站点。我担心的是,站点实际驻留和可访问的裸存储库和存储库意味着服务器上的两个(可能很大)存储库,不是吗?
我能不能把这个放轻松一点?在我的更新后钩子中,是否可以只提取最新的更改并覆盖以前的文件。或者,我应该用'cp‘而不是'git拉’来做这个吗?我想每次提交之后,我都可以删除站点目录中的所有文件,然后执行拉,然后删除.git目录?
不管怎么说,我还是想听听别人怎么处理这件事。谢谢
发布于 2014-11-12 01:49:14
"git克隆“有几个可能有用的选项:
如果您要克隆位于同一台机器上的回购产品,git尝试使用“克隆-本地”默认情况下,因此您可能已经从中受益了。
发布于 2014-11-12 04:35:41
以下是另外两种选择。
与其推到中间存储库,不如让您推送的存储库成为活动站点的目录。在这里,您可以简单地创建一个调用git checkout HEAD的更新后挂钩。这样,存储库只存储一次。
第二种选择是使用git archive,如果您不能更改推送到的位置。该命令将提交的内容导出为tar或ZIP文件。如果您阅读了git help archive,它有以下示例,这些示例可能与您的用例相关:
git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)创建一个tar存档,其中包含当前分支上最新提交的内容,并将其解压到/var/tmp/垃圾目录中。
您可以连接一些类似的内容,将HEAD提交导出到您的活动站点目录中。
https://softwareengineering.stackexchange.com/questions/262515
复制相似问题