1、建立SVN版本库java
1.安装svn服务器 linux
yum install subversion程序员
2.查看版本windows
svnserve --version服务器
3.创建SVN版本库目录(即你的SVN服务器里面的文件存放在哪一个目录)框架
mkdir -p /data/svnide
4.建立SVN版本库svn
svnadmin create /data/svn/davesvn测试
5.修改SVN的配置文件相关配置信息,主要是权限这块idea
(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)
2、配置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)便可;