使用git发布到网站

时间:2011-02-08 20:48:07

标签: git git-push git-remote

当我推送到我的远程源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

存储库更新但我的网络文件夹仍为空。有什么想法吗?

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

3 个答案:

答案 0 :(得分:13)

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

您使用的指南和我链接的推荐人与另一篇文章都是基于,但我链接的指南似乎是引导新用户进入#git IRC频道的首选。

答案 1 :(得分:6)

离这里不多,但我可以报告我成功使用了类似的方法。

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

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

#!/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扩展名。回显的文本提供了很好的反馈,实际上正在进行复制。如果您没有看到该文本,那么它不会拉动更改。如果您不打算将您的远程存储库称为“集线器”,请将其替换为“origin”或您决定使用的任何内容。

作为一项预防措施,以便我的Prime和本地存储库不会出现问题,我将此作为我的Prime post-commit钩子:

#!/bin/sh

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

git push hub

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

答案 2 :(得分:1)

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