强制远程结帐分支

时间:2011-11-29 17:23:53

标签: git deployment

我们目前通过Git使用post-receive挂钩部署到开发服务器。它是一个开发服务器而不是一个登台服务器,所以我们希望能够部署/查看多个分支(而不仅仅是“dev”分支或类似的东西)。

当推送新的分支或提交时,后接收挂钩成功执行远程仓库的检出以推送任何分支。

我们的典型周期可能是:

在开发服务器上查看新的branch1 - git push devserver branch1

在开发服务器上查看新的branch2 - git push devserver branch2

再次在开发服务器上查看旧branch1 - git push devserver branch1

但是,如果我们想要检查分支旧分支而不是当前活动分支,我们无法执行git push devserver branch1因为远程仓库响应“所有最新”,因为branch1已经被推了一会儿。显然,post-receive挂钩没有运行,所以有另一种方法来操作远程结账吗?

我知道我可以通过SSH连接到开发服务器并以branch1方式结帐,但如果可能的话,我想从我的本地仓库执行操作。我已经尝试过预接收和更新挂钩,但这些似乎都没有在这种情况下运行。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

由于它只是一个(dev)服务器,为什么不删除分支并重新创建它?

git push devserver :branch1
git push devserver branch1

答案 1 :(得分:0)

控制远程工作副本非常有限,因为git实际上并不是这样做的,所以你必须SSH服务器。制作一个小脚本连接和结账将节省您的时间和手指肌肉。

答案 2 :(得分:0)

您也可以尝试连接与pre-receive hook相同的脚本。这意味着无论您的推送命令是否成功,您的脚本都将运行。也就是说,我对这种东西非常警惕,因为你现在所做的就是使用钩子,这种钩子的设计不是为了使用而且可能在将来为自己挖洞。

真正的解决方案是@CharlesB建议的 - 使用一个简单的脚本。

编辑:请忽略此答案。正如评论所暗示的那样,这是行不通的。随意投票;)