首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git设置以允许某些分支的强制更新。

Git设置以允许某些分支的强制更新。
EN

Stack Overflow用户
提问于 2014-01-14 16:57:48
回答 1查看 69关注 0票数 2

在git服务器上,我们的git配置为

代码语言:javascript
复制
[receive]
    denyDeletes = true
    denynonfastforwards = true

这是一个非常明智的设置,因为它阻止了对重要分支的错误的强制更新。然而,有许多分支,这将是有用的强制更新。

与其拥有这个全局设置,还有一个实现此功能的简单方法。

我假设这可能是通过一个git预接收钩,但我不确定我将如何检查推是否是一个被迫的不快速前进。

我知道有一些完整的解决方案可以通过Git托管软件(如gitolite )实现,但我希望在一个简单的ssh服务器上实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2014-01-14 17:36:30

您可以使用更新钩子来完成此操作。对每个被更新的引用都调用一次,包括三个参数:(1)参考名称;(2)该分支的预更新提交-id(如果创建分支,则为'0'*40 );(3)该分支的更新后提交-id(如果要删除该分支,则为'0'*40 )。如果它不是一个创建或销毁,那么您可以运行git merge-base old-rev new-rev。如果结果与旧-rev相同,则更新为快速转发。否则,更新是一个力量推动的东西,而不是从前一个头。

在我的更新钩子中,我允许以用户名开头的分支强制更新,例如,狼可以强制推送wolf/*中的任何分支,但是只有用户的白名单才能在没有前缀的情况下更新这些分支,例如master

这里有一个指向这样做的示例更新钩子的链接,就像在SourceForge:https://forge-allura.apache.org/p/allura/git/ci/master/tree/scripts/git-hooks/for-the-remote-repo/update更新的Allura项目中使用的那样

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21119293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档