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)便可;