我在文件夹/var/git/mysite.com.git
中有一个带有虚拟仓库的Web服务器。我的hooks/post-receive
看起来像这样:
#!/bin/sh
GIT_WORK_TREE=/var/www/mysite.com/public_html git checkout -f
我运行git push live master
(其中live
是生产服务器上我的遥控器的名称),后接收正确执行,并将文件放在Web根目录中。然后我必须运行git push origin master
将副本推送到我的github(用于备份/审查)。我可能会以相反的顺序执行这些操作,因为它完成了同样的事情。
有没有用一个命令完成这两个步骤?看起来我可以把第二个git push
命令放在post-receive或其他地方(在Github上?)将repo推送到两个远程位置但是我还没有找到解决方案。
答案 0 :(得分:1)
我用于Jenkins这样的部署任务。它是一个非常好的系统,可以在部署之前运行任务并检查代码。
另一个解决方案是Ansible在您的服务器上运行代码(在所有服务器上)与Jenkins的组合非常好。
或者您可以编写一个包含所有命令的简单shell脚本,并在钩子中调用它。但我更喜欢部署系统来运行某些任务并在生产之前检查我的代码。
答案 1 :(得分:1)
您可以将以下行添加到~/.gitconfig
文件中,以使用别名来实现此目的:
[alias] push-live = !git push live master && git push origin master
然后你可以运行git push-live
,推送到两个遥控器。