这些线有什么作用?

发布于 2025-01-04 12:49:19 字数 472 浏览 0 评论 0原文

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

I was looking at http://toroid.org/ams/git-website-howto and was following along fine until I got to this:

$ 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

I can't find any doc online for GIT_WORK_TREE and I have no idea what's happening there.

Also why does he set up on the remote $ git init --bare shouldn't that be not bare as he want to deploy the actual files there?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼眸 2025-01-11 12:49:19

GIT_WORK_TREE

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

--work-tree=<路径>

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


裸存储库

您只能推送到裸存储库。因此,他执行了以下操作:

  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 # 对于 Rails 应用程序
    
  4. 向裸存储库添加一个接收后钩子(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 和 MagicTM 的统一现已更新您的代码,如果您在浏览器中按 F5,您应该会看到更改。

GIT_WORK_TREE

It's the same as using --work-tree with the git command.

--work-tree=<path>

Set the path to the working tree. It can be an absolute path or a path relative to the current working directory.
This can also be controlled by setting the GIT_WORK_TREE environment
variable and the core.worktree configuration variable (see
core.worktree in git-config(1) for a more detailed discussion).


Bare Repository

You can only push to bare repositories. So he does the following:

  1. Create a bare repository where you will push to. Store it somewhere like in /home/git/repos/www.example.org (on the server).
  2. Clone that repository into another folder like /var/www/www.example.org (on the server).
  3. Point your Apache/httpd to the non-bare repo location.

    DocumentRoot /var/www/www.example.org
    DocumentRoot /var/www/www.example.org/public # for Rails apps
    
  4. Add a post-receive hook (hooks/post-receive, chmod +x) to the bare repo, which checks out the bare repository when a push is received (i.e. use GIT_WORK_TREE=/var/www/www.example.org). (Note: If you have to reload/restart your server (Ruby apps for example) add something like service SERVICE_NAME restart to the hook script as well.)

  5. Push from your development machine to the bare repo. The bare repo will now automatically "forward" that push to the repository residing in /var/www/www.example.org. The unison of githooks and MagicTM has now updated your code, you should see changes if you F5 in your browser.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文