我正在查看http://toroid.org/ams/git-website-howto,并且一直很好,直到我做到这一点:
$ mkdir /var/www/www.example.org
$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
$ chmod +x hooks/post-receive
我在GIT_WORK_TREE
找不到任何在线文档,我不知道那里发生了什么。
另外,为什么他在远程$ git init --bare
设置不应该不裸,因为他想在那里部署实际文件?
答案 0 :(得分:2)
与使用git
命令使用--work-tree
相同。
--work-tree=<path>
设置工作树的路径。它可以是绝对路径或相对于当前工作目录的路径。 这也可以通过设置GIT_WORK_TREE环境来控制 变量和core.worktree配置变量(参见 git-config(1)中的core.worktree用于更详细的讨论。)
您只能推送到裸存储库。所以他做了以下事情:
/home/git/repos/www.example.org
(在服务器上)的某个位置。/var/www/www.example.org
(在服务器上)。将Apache / httpd指向非裸仓库位置。
DocumentRoot /var/www/www.example.org
DocumentRoot /var/www/www.example.org/public # for Rails apps
将一个post-receive挂钩(hooks/post-receive
,chmod + x)添加到裸仓库,在收到推送时检查裸仓库(即使用GIT_WORK_TREE=/var/www/www.example.org
)。 (注意:如果必须重新加载/重新启动服务器(例如Ruby应用程序),也可以在钩子脚本中添加service SERVICE_NAME restart
之类的内容。)
从您的开发机器推送到裸机库。现在,裸仓库将自动“转发”该推送到驻留在/var/www/www.example.org
中的存储库。 githooks 和Magic TM 的统一现在已经更新了您的代码,如果您在浏览器中使用F5,您应该会看到更改。