6

我一直在研究使用 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

这一切在理论上似乎都很好,看起来子模块命令正在运行,但我收到以下错误消息:

远程:为路径“wordpress”注册的子模块“wordpress”(git://github.com/WordPress/WordPress.git) 远程:子模块“wp-content/themes/limeblastevolution/inc/cssCrush”(git://github. com/peteboere/css-crush.git)为路径“wp-content/themes/limeblastevolution/inc/cssCrush” 远程注册:致命:工作树“/srv/www/limeblast.co.uk/htdocs_test”已经存在。 远程:将“git://github.com/WordPress/WordPress.git”克隆到子模块路径“wordpress”中失败

有任何想法吗?谢谢你。

4

1 回答 1

6

您可能会成功使用git-deploy

但是,如果过于关注 Rails,或者由于其他原因您不能或不会使用它,这里是如何在 post-commit 钩子中强制子模块更新:

git submodule init && git submodule sync && git submodule update

您必须在服务器上运行它;所以最好将它添加到您的hooks/post-receive脚本中。顺便说一句,它是简单的 BASH 或 SH。

于 2012-05-11T16:59:42.210 回答