阻止Git存储库中某些用户的特定文件

时间:2013-07-25 18:43:17

标签: git git-extensions gitblit

我有一个问题,有一个css样式文件,这个文件不应该被开发团队中的任何人修改,只有管理员(我):)

有办法锁定文件。我在提交中看到,文件已被更改,但我不希望发生这种情况。

我能做什么?

我使用gitblit服务器,git使用git-extensions。

非常感谢你的回答。

1 个答案:

答案 0 :(得分:1)

这必须在setup a hook within Gitblit上在服务器上完成。检查one of the provided post-receive hooks。收到推送数据后服务器运行post-receive挂钩,如果返回false,则推送将被拒绝。

当调用脚本时,您会获得一个refs列表,请参阅示例中的如何获取提交列表

这应该让你开始获得推送中包含的文件列表:

def commits = JGitUtils.getRevLog(repository, command.oldId.name, command.newId.name)    
for commit in commits:
     def diffs = git.diff().setNewTree(commit.getTree())
                           .setOldTree(commit.getParent(0).getTree())
                           .call();
     for diff in diffs:
          def path = diff.getOldPath();
          //check the extension on the path, and return false to reject the push