这些线做什么?

时间:2012-02-10 13:18:01

标签: git repository

我正在查看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设置不应该裸,因为他想在那里部署实际文件?

1 个答案:

答案 0 :(得分:2)

GIT_WORK_TREE

与使用git命令使用--work-tree相同。

  

--work-tree=<path>

     

设置工作树的路径。它可以是绝对路径或相对于当前工作目录的路径。   这也可以通过设置GIT_WORK_TREE环境来控制   变量和core.worktree配置变量(参见   git-config(1)中的core.worktree用于更详细的讨论。)


Bare Repository

您只能推送到裸存储库。所以他做了以下事情:

  1. 创建一个您将推送到的裸存储库。将其存储在/home/git/repos/www.example.org(在服务器上)的某个位置。
  2. 将该存储库克隆到另一个文件夹,如/var/www/www.example.org(在服务器上)。
  3. 将Apache / httpd指向非裸仓库位置。

    DocumentRoot /var/www/www.example.org
    DocumentRoot /var/www/www.example.org/public # for Rails apps
    
  4. 将一个post-receive挂钩(hooks/post-receive,chmod + x)添加到裸仓库,在收到推送时检查裸仓库(即使用GIT_WORK_TREE=/var/www/www.example.org)。 (注意:如果必须重新加载/重新启动服务器(例如Ruby应用程序),也可以在钩子脚本中添加service SERVICE_NAME restart之类的内容。)

  5. 从您的开发机器推送到裸机库。现在,裸仓库将自动“转发”该推送到驻留在/var/www/www.example.org中的存储库。 githooks 和Magic TM 的统一现在已经更新了您的代码,如果您在浏览器中使用F5,您应该会看到更改。