由于项目开发的需要,向SVN提交代码的开发人员只能是项目负责人在jira问题中分配的经办人,由此需要实现在svn客户端提交版本内容时要做权限控制。考虑到该控制是关联第三方程序,而且svn提交的权限限制是由SVN hooks脚本完成的,故我们采用修改svn的pre-commit脚本调用jira rest api获取jira相应的问题来判断是否可以提交版本。主要实现形式为:
- 在脚本中获取提交的svn注释和提交的作者信息,
- 判断提交的信息是否为空,不为空的则继续,为空返回提示
- 判断提交的信息是否小于指定的字节数,小于则返回提示,大于则继续
- 通过正则表达式从提交的信息中获取jira的问题关键字
- 判断提交的jira问题关键字是否符合规范,符合则继续,不符合返回提示
- 通过jira问题关键字调用jira的rest api接口查询jira问题的key、状态和经办人 并存成jiraissue.json文件,便于后续结果的解析
- 通过步骤6返回的结果判断svn客户端提交的jira问题关键字在jira中是否存在,存在则继续,不存在则返回
- 通过步骤6获取的文件进行解析获取jira问题的关键字 、经办人及工作流的状态
- 判断svn客户端的提交作者是否和步骤8得到的经办人是否是同一个人,且当前jira问题的状态是否符合提交符合则提交,不符合则返回提示 无权限提交该版本
具体方法:
先安装linux jq工具 可以上官网下载后安装(https://stedolan.github.io/jq/download/)或者直接使用wget命令安装