每当我推送到裸存储库时,如何自动更新工作目录?

时间:2012-03-20 06:58:52

标签: git version-control

我的服务器上有一个裸存储库,我将其推送到/ var / www / repos / my_project。我想设置我的工作流程,以便当我推送到所述存储库时,我的工作目录将自动更新更改。我的工作目录将是/ var / www / my_live_site。有谁知道如何做到这一点?我环顾四周,但找不到任何好的指示或资源。

2 个答案:

答案 0 :(得分:1)

在裸存储库中安装post-update(或post-receive,它们等效于此目的)钩子,它将在工作目录的上下文中运行git pull

这意味着将脚本放到包含

/var/www/repos/my_project/hooks/post-update
#!/bin/sh
cd /var/www/my_live_site
git pull

并使其可执行。您可能希望将其扩展为仅在主服务器被推送时运行(post-update hook将所有推送的ref的名称作为参数,因此检查master是否在其中),如果pull失败则发送电子邮件等等,但这应该让你去。

答案 1 :(得分:0)

  1. 永远不要将任何VCS的WorkingCopy放在web-root下(显示完整的开发历史记录,以及一些DVCS的私有数据)
  2. 在post-* hook中使用git archive来更新网站,正如Jan已经建议的那样