10

当我推送到远程源 git 存储库时,我使用本指南使用 git 在我的网站上自动发布我的更改:

http://www.lwp.ca/james/2010/03/using-git-to-manage-online-website-projects/

这是我的 /hooks/post-update 文件:

cd ../../public_html/dir/wbg
env -i git pull

这是我的目录结构:

/home/git/wbg.git <-- 我的远程 git 存储库

/home/public_html/dir/wbg <-- 我的网络文件夹

当我跑

git push origin master

存储库更新,但我的 web 文件夹仍然是空的。有任何想法吗?

编辑:如果将来有任何流量看到这一点,我真正的问题是您的远程源和目标网站目录都必须是 git 存储库。您不能只将其设置为将项目复制到新文件夹,除非该文件夹也是 git 存储库。

4

3 回答 3

13

您可以在http://toroid.org/ams/git-website-howto找到更好的替代方案,它只使用一个 git 存储库,并允许所有元数据和以前的历史记录保留在 DocumentRoot 之外。

您使用的指南和我将引用者链接到另一篇文章的指南都是基于的,但我链接的指南似乎是在#git IRC 频道中引导新用户访问的首选指南。

于 2011-02-11T01:41:32.367 回答
7

这里没什么可做的,但我可以报告说我成功地使用了与此类似的方法。

出于我的目的,我将裸服务器存储库称为“Hub”,将面向 Web 的存储库称为“Prime”。确保您已在服务器 htdocs 目录 (Prime) 中正确初始化 git 存储库,并将更改推送到裸存储库 (Hub) 或将它们拉入。

这是post-update我使用的钩子,它位于我的 Hub 存储库的钩子目录中:

#!/bin/sh

echo
echo "*** Pulling changes into Prime"
echo

cd /path/to/htdocs/ || exit
unset GIT_DIR
git pull hub master

exec git-update-server-info

确保这是可执行的!如果有疑问,只需编辑post-update.sample文件并.sample在完成后删除扩展名。回显的文本提供了很好的反馈,表明复制实际上正在发生。如果您没有看到该文本,那么它并没有拉动更改。如果您不打算将远程存储库称为“hub”,请将其替换为“origin”或您决定使用的任何内容。

作为预防措施,我的 Prime 和本地存储库不会太乱,我将这个作为我的 Primepost-commit钩子:

#!/bin/sh

echo
echo "*** Pushing changes to Hub"
echo

git push hub

然后我可以将更改从 Hub 拉到我的本地存储库中。

于 2011-02-09T05:38:24.843 回答
1

您可以从获取更新后回显一些调试输出开始。标准输出和标准错误输出都被转发到另一端的 git send-pack,因此您可以简单地回显消息,您将在您执行 git push 的客户端上看到这些消息。我假设你按照这个词的指南,使更新后脚本可执行,将 repo 克隆到 web 文件夹等。

于 2011-02-08T20:58:19.133 回答