import java.text.MessageFormat;import com.gitblit.GitBlitimport com.gitblit.models.RepositoryModelimport com.gitblit.models.UserModelimport org.eclipse.jgit.transport.ReceiveCommandimport org.eclipse.jgit.transport.ReceiveCommand.Resultimport org.slf4j.Loggerimport com.gitblit.utils.ClientLogger//判断用户信息,是否为白名单if(user.username == 'admin'){ logger.info("允许,用户 ${user.username} 对 ${repository.name} 进行推送共 ${commands.size} 条信息") }else{ //全局变量 def blocked = false //设定需要保护的分支 def branch = 'refs/heads/master' //判断方法 switch (repository.name) { case 'test.git': //需要控制的版本库名称 for (ReceiveCommand command : commands) { def updatedRef = command.refName //判断是否为设定的分支 if (updatedRef.equals(branch)) { // 调用 result 接口,使用其它错误,并写入描述 command.setResult(Result.REJECTED_OTHER_REASON, "权限不足,无法对 ${repository.name} 版本库下的 ${updatedRef} 分支进行推送,请联系管理员") blocked = true } } break default: break } if (blocked) { // 返回 false 结束操作 //用户信息摘要 logger.info("用户 ${user.username} 尝试对 ${repository.name} 进行推送,共 ${commands.size} 条信息") return false } }