当我推送到我的远程源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仓库。
答案 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文件夹等。