2015-10-13 75 views
1

好吧,使用capistrano 3.2和Rails 4.2。Capistrano:我怎样才能让一个git仓库在live/deploy上运行

简而言之,我想让每个发行版在活动服务器上都有一个完整的git仓库。我知道Cap使用git来克隆文件,但是afik默认情况下会删除.git文件夹。我发誓我之前在早期版本的Capistrano上工作过,但没有任何文档或谷歌搜索找到正确的设置。或者,如果我有一个奇数版本的Cap

而在我开始使用“版本控制直播吗?不要改变生活,开发你的开发服务器你白痴!?”

如果你的控制改变了某些东西,或者如果有紧急情况,你别无选择,只有猴子补丁才能在活动中拥有活动的git repo。因为现在你有了git所显示的变化,你可以提交它,并将它推回到你的中央仓库,并使其顺利上传。它之前拯救了我的屁股,并且意味着我不必手工复制我所知道的解决“现场”问题。 无论如何,理由。任何人都知道吗?

我对这个简单的问题表示歉意,我认为这是倒霉的谷歌fu离开了我,没有找到答案。搜索“Capistrano离开混帐”或其他这样的条款是淹没与使用git部署。

提前欢呼。

+0

为什么不能像普通情况下那样再次运行'cap production deploy'来推出新代码?我想你将不得不挖掘一些代码来使Capistrano做你想做的事情。 –

回答

0

这将是非平凡的。 Capistrano使用通过tar传送的git archive来创建发布文件夹。假设你可以重写这个任务,但是你可能会花费更多的努力。我强烈建议你看看只需创建一个工作流,在其中提交修补程序并再次推送。我们使用生产部署指向的prod分支,因此您可以将更改提交给prod分支和cap production部署,然后将您的更改合并回开发分支。

如果您确实选择尝试并覆盖此设置,请查看git tasks的Capistrano来源。它使用Git Strategy类,因此您需要继承并覆盖它,然后重写该任务以使用您的类。 Capistrano基本上是just a subclass of Rake,所以在重写Rake任务时寻找文档,例如Overriding rails' default rake tasks

祝你好运!