我一直在研究使用git部署网站的不同方法,并找到了以下教程:
http://42pixels.com/blog/quick-and-dirty-git-deployment
我喜欢本教程中提出的想法,并且热衷于将它用于我的网站,只是它似乎不支持子模块。
是否可以更改此项以便根据需要提取和更新子模块?
谢谢。
更新
过去几个小时我一直在研究这个问题,而且我似乎在取得进展,但我仍然无法让它发挥作用。
我已经切换到这个教程:http://toroid.org/ams/git-website-howto(大致相同,只是一些细微的变化),并在遵循以下建议后发现:https://stackoverflow.com/a/6636509/1049688我最终得到了一个收件人文件如下所示:
#!/bin/sh
export GIT_WORK_TREE=/srv/www/limeblast.co.uk/htdocs_test
export GIT_DIR=/srv/www/limeblast.co.uk/.git
cd $GIT_WORK_TREE
git checkout -f master
git submodule init
git submodule update
这在理论上似乎很好,并且看起来子模块命令正在运行,但我收到以下错误消息:
remote:子模块'wordpress'(git://github.com/WordPress/WordPress.git)已注册路径'wordpress' remote:子模块'wp-content / themes / limeblastevolution / inc / cssCrush'(git://github.com/peteboere/css-crush.git)已注册路径'wp-content / themes / limeblastevolution / inc / cssCrush' remote:致命:工作树'/srv/www/limeblast.co.uk/htdocs_test'已经存在。 remote:将'git://github.com/WordPress/WordPress.git'克隆到子模块路径'wordpress'失败
有什么想法吗?谢谢。
答案 0 :(得分:6)
git-deploy可能会取得成功。
但是,如果这太过于关注Rails,或者由于其他原因你不能或不会使用它,这里是如何在post-commit钩子中强制子模块更新:
git submodule init && git submodule sync && git submodule update
您必须在服务器上运行它;所以最好将它添加到hooks/post-receive
脚本中。这是简单的BASH或SH,bytheway。