linux 创建svn版本库,并在svn上配置checkstyle做代码风格检查
一、创建SVN版本库
1.安装svn服务器
yum install subversion
2.查看版本
svnserve --version
3.建立SVN版本库目录(即你的SVN服务器里面的文件存放在哪个目录)
mkdir -p /data/svn
4.创建SVN版本库
svnadmin create /data/svn/davesvn
5.修改SVN的配置文件相关配置信息,主要是权限这块
(1)svnserve.conf文件修改
vi /data/svn/davesvn/conf/svnserve.conf
将以下几项放开注释并修改
[general]
anon-access = none
auth-access = write
password-db = passwd #还可以指定到其它目录都是可以的
authz-db = authz
realm = My First Repository
说明:
anon-access: 控制非鉴权用户访问版本库的权限。
auth-access: 控制鉴权用户访问版本库的权限。
password-db: 指定用户名口令文件名。
authz-db:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
realm:指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件
(2)passwd文件修改
vi /data/svn/davesvn/conf/passwd
在文件中最后添加以下2行(配置允许访问SVN的用户)
[users]
test = test
(3)authz文件修改
vi /data/svn/davesvn/conf/authz
在文件中最后添加以下3行(配置用户访问权限相关:根目录下的所有文件test用户都可以进行读写操作)
admin = test
[/]
@admin = rw
6.启动SVN服务:
svnserve -d -r /data/svn
说明:
-d表示以daemon方式(后台运行)运行
-r /data/svn指定根目录是/data/svn
(停止SVN服务:ps -aux |grep svn kill -9 进程杀掉)
7.测试svn版本库搭建是否成功
(1)windows安装TortoiseSVN 客户端,不作过多说明
(2)新建测试目录svn,进入后右键,点checkout

下图svn地址为:svn://Linux IP/项目名称

SVN 服务器的IP地址和版本库名称(此文章中此处应为test/test)

新建个文件svn.txt. 把这个文件上传到SVN服务器(add)


二、配置checkstyle做代码风格检查
采用:SVN PreCommitChecks + CheckStyle + svnchecker方案
1.前期准备:插件下载
(1)CheckStyle下载
下载地址:https://download.csdn.net/download/mactty/4392509
checkstyle-5.3-bin.zip解压后结构如下图

(2)svnchecker下载
下载地址:https://sourceforge.net/projects/svnchecker/files/svnchecker/0.3/

svnchecker-0.3.tar.gz解压后目录如下:

2.将checkstyle-5.3-bin.zip,svnchecker-0.3.tar.gz上传至linux虚拟机,并解压

3.在svn代码库的hooks目录下创建/修改配置文件
(1)pre-commit修改
1)进入svn版本库的hooks目录
cd /data/svn/davesvn/hooks
2)将pre-commit.tmpl重命名为pre-commit
mv pre-commit.tmpl pre-commit
3)将下图中的1注释,2添加
/data/svntools/svnchecker-0.3/Main.py PreCommit "$REPOS" "$TXN" || exit 1
(说明:/data/svntools/svnchecker-0.3为svnchecker插件目录)

(2)新增idea_checks.xml文件(此文件为checkstyle代码检测规则文件,可自定义)
touch idea_checks.xml
文件内容如下:
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<!-- 检查文件是否以一个空行结束 -->
<module name="NewlineAtEndOfFile"/> <module name="TreeWalker">
<!-- 禁止使用System.out.println -->
<module name="Regexp">
<property name="format" value="System\.out\.println"/>
<property name="illegalPattern" value="true"/>
</module>
</module>
</module>
(3)新增svncheckerconfig.ini文件
touch svncheckerconfig.ini
文件内容如下:
[Default]
#This property tells Subversionchecker about all checks
#(UnitTests, AccessRights, XMLValidator etc) it should execute.
#Separated with comma (",")
Main.PreCommitChecks=Checkstyle
#Path of java executable to run Checkstyle command
Checkstyle.Java=/usr/bin/java
#Classpath for executing Checkstyle rules
Checkstyle.Classpath=/data/svntools/checkstyle-5.3/checkstyle-5.3-all.jar
#Configuration file for Checkstyle to run its rules.
Checkstyle.ConfigFile=/data/svntools/checkstyle-5.3/idea_checks.xml
#In case of failures, where should Subversionchecker redirect the errors
Checkstyle.FailureHandlers=Console
说明:
Main.PreCommitChecks:检查器为Checkstyle
Checkstyle.Java:Checkstyle执行的java命令路径为/usr/bin/java
Checkstyle.Classpath:要加载/data/svntools/checkstyle-5.3/checkstyle-5.3-all.jar
Checkstyle.ConfigFile:检查规则文件路径为/data/svntools/checkstyle-5.3/idea_checks.xml
Checkstyle.FailureHandlers:失败时将把信息输出到标准输出
4.校验
当有代码提交时,此检查框架将运行,保证违反规则的代码被拒绝。程序员的将看到类似如下的信息

5.提交非java代码报错问题:设置只对java代码进行校验
说明:在Checkstyle.py文件中command = "%s -classpath %s com.puppycrawl.tools.checkstyle.Main -c %s " % (java, classpath, config)这个命令执行时需要在后面加上待检查文件,但是非java文件在transaction.getFiles(check, ignore)方法中得到的为空,但是后续并没有做验证就直接执行Process.execute(command + " ".join(files))命令,故报错。
方法:在command = "%s -classpath %s com.puppycrawl.tools.checkstyle.Main -c %s " % (java, classpath, config)语句之后加上 if cmp(" ".join(files),"") == 0: return ("", 0)即可;

linux 创建svn版本库,并在svn上配置checkstyle做代码风格检查的更多相关文章
- SVN版本库(访问权限)配置实例笔记
http://blog.csdn.net/zjianbo/article/details/8578297 SVN版本库(访问权限)配置实例笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. ...
- 创建本地SVN版本库以及将SVN导入GIT
创建本地SVN 通常SVN作为一种服务,是在服务器上架设,供用户通过网络访问使用.但如果只是自己日常使用,完全可以架设在本机上,不需要启动后台程序,通过文件的方式访问即可. 建立本地SVN非常简单,一 ...
- linux服务器上创建svn版本库
1. 创建存放各个svn版本库的目录svnrepos(自己定义路径) -bash: cd /usr/local/apache/htdocs/ -bash: mkdir svnrepos 2. 假设我要 ...
- linux上svn版本库创建小记
[新建svn仓库] 先创建一个文件夹mkdir /opt/svn/wechat; 然后创建svn版本库 svnadmin create /opt/svn/wechat; [创建用户组权限 ...
- svn 版本库的创建和配置
1.创建SVN版本库 mkdir trunk svnadmin create /root/trunk/svntest #这里是路径和即将创建的版本库名称 2.配置svn cd /root/trunk/ ...
- Linux 搭建svn版本库
一.安装svn服务器端yum install subversion 从镜像下载安装svn服务器端 如果后面执行“svnadmin create /usr/local/svn/sunny”提示 ...
- Linux新建SVN版本库
1.进入svn 版本库(如/www/svn) 2.创建svn 版本库svnadmin create edition 3.进入新建的版本库库目录cd edition 4.进入版本库配置目录cd con ...
- 工作随笔——使用svnsync实时备份SVN版本库
前段时间把SVN版本库从win迁移到了Linux上,没隔几天那台win的磁盘就严重坏道了....这TMD什么运气! 花费了点时间研究了下svn自己的同步工具.写个日志记录下. 注意:svnsync要求 ...
- 用svnsync 同步备份 svn 版本库 从一台服务器到另一台服务器
如用svnsync 同步备份两台机器的svn .(就以linux服务器到windows服务器为例子) 要同步的项目名称:source_svn svn 版本库1 .4 以上 源目录: ...
随机推荐
- .net mvc 自定义错误页面
1.Global.asax.cs中,加入如下代码 protected void Application_Error(Object sender, EventArgs e) { Exception ex ...
- Patter discovery VS clustering
“pattern driven” (PD) is based on enumerating candidate patterns in a given solution space and picki ...
- MyBatis的延迟加载和缓存机制
延迟加载: 什么是延迟加载: MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询时,按照设置延迟规则推迟对关联对象的select查询.延迟加载可以有效的减少数据库压力. MyBatis根据对 ...
- 纪中集训2020.02.03【NOIP提高组】模拟B 组总结反思——登机(board),游戏(game),分组(group)
T1 JZOJ5535. 登机(board) 比赛时 一在题目列表里看到题目标题,就热血沸腾了,不知道为什么,老师居然放了一道之前做过的题目.我清楚地记得这题是DP,于是很快码了出来.讲一讲我的思路, ...
- vue组件之间传值
父组件向子组件传值 父组件可以在引用子组件时,通过属性绑定(v-bind:)的形式,把数据传递给子组件.在子组件的props中定义后即可使用数据 <div id="app"& ...
- gulp常用插件之gulp-filter使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-filter这是一款可以把stream里的文件根据一定的规则进行筛选过滤. 更多使用文档请点击访问gulp-filter工具官网. 安装 ...
- C# LINQ学习笔记一:走进LINQ的世界
本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5832322.html,记录一下学习过程以备后续查用. LINQ 简介: 语言集成查询(LINQ)是Vi ...
- react 事件传参数
class Demo extends React.Component { click = (a) => (e) => { console.log('额鹅鹅鹅', a, e); } rend ...
- C++-HDU3400-Line belt[三分]
将军饮马问题的升级版 二维平面中要从A到D,给出两条线段AB,CD,分别在线段AB,CD,以及空白处的速度为P,Q,R 求最少用时 由于最优位置满足“凸性”,且两条线段可以等价,所以可以采取三分答案迭 ...
- 目标检测,主要问题发展,非极大值抑制中阈值也作为参数去学习更满足end2end,最近发展趋势和主要研究思路方向
目标检测,主要问题发展,非极大值抑制中阈值也作为参数去学习更满足end2end,最近发展趋势和主要研究思路方向 待办 目标检测问题时间线 特征金字塔加滑窗 对象框推荐 回归算法回归对象框 多尺度检测 ...