SVN hooks+Jira WebService實現控制日誌信息提交總結

一、SVN hooks相關知識
   SVN hooks即SVN鉤子腳本是利用後臺的管理命令和所需要使用的hooks提供的參數。來進行一些組合,滿足的需求! 鉤子腳本在每個repos的hooks目錄下面。每個裏面都有模板,名字如:pre-commit.tmpl等,要實現鉤子腳本,即在hooks目錄下創建批處理或者可執行文件,文件名與相應的鉤子模板名同如:pre-commit.bat。
二、WebService
   Web service平臺是一套標準,它定義了應用程序如何在Web上實現互操作性。你可以用任何你喜歡的語言,在任何你喜歡的平臺上寫Web service ,只要我們可以通過Web service標準對這些服務進行查詢和訪問。很早就耳聞WebService,不過對其瞭解不多。這次的需要的操作是調用Jira系統的WebService,通過查相應資料獲得WSDL的URL,再借用WSDL2JAVA工具生成客戶端代碼,將生成的代碼導入eclipse,進行代碼調用。
調用代碼如下:
Java代碼  收藏代碼
  1. public class QSVerified {  
  2.   
  3.     public static final String UAT_VERIFIED = "10006";  
  4.     public static final String QA_VERIFIED = "10008";  
  5.     public static final String CLOSED = "6";  
  6.       
  7.     public static void main(String[] args) {  
  8.           
  9.         JiraSoapService cenericServices;  
  10.       
  11.         try {  
  12.             cenericServices = new JiraSoapServiceServiceLocator().getJirasoapserviceV2();  
  13.                 String login = cenericServices.login("username""password");  
  14.                 RemoteIssue issue = cenericServices.getIssue(login, args[0]);  
  15.                 String status = issue.getStatus();  
  16.                 if(UAT_VERIFIED.equals(status)||QA_VERIFIED.equals(status)  
  17.                 ||CLOSED.equals(status)){  
  18.                     System.exit(1);  
  19.                 }else{  
  20.                     System.exit(0);  
  21.                 }  
  22.             } catch (ServiceException e) {  
  23.                 e.printStackTrace();  
  24.             } catch (RemoteAuthenticationException e) {  
  25.                 e.printStackTrace();  
  26.             } catch (RemoteException e) {  
  27.                 e.printStackTrace();  
  28.             } catch (java.rmi.RemoteException e) {  
  29.                 e.printStackTrace();  
  30.             }  
  31.     }  
  32. }  

三、打jar包
   需要將自己寫的代碼及WebService生成的客戶端代碼進行打包,打包命令:jar -cvf com/ QSVerified.jar,打包好後修改MANIFEST.MF文件,加上Main-Class及Class-Path,依賴包放在lib文件夾中,將QSVerified.jar及lib拷貝到hooks目錄下。
四、在bat文件中執行jar包
   在執行jar包時要注意加是jar的目錄。
   pre-commit.bat代碼如下:

Java代碼  收藏代碼
  1. @echo off  
  2. set SVN_BINDIR=C:\"Program Files"\"VisualSVN Server"\bin  
  3. setlocal  
  4. set REPOS=%1  
  5. set TXN=%2  
  6. set first=1  
  7.   
  8. rem check that logmessage not null  
  9. %SVN_BINDIR%\svnlook log "%REPOS%" -t "%TXN%" | findstr "." > nul  
  10. set s=%SVN_BINDIR%\svnlook log "%REPOS%" -t "%TXN%"  
  11. for /f "delims=" %%a in ('%s%'do ( if !first!==1 set str=%%a   
  12. set first=0)  
  13. set st=%str:*-=%  
  14. set prefix=QS-  
  15. set key=%prefix%%st:~0,5%  
  16. set temp=%st:~4,1%  
  17. if "%temp%"==" " set key=%prefix%%st:~0,4%  
  18. if %errorlevel% gtr 0 goto err  
  19. java -jar %REPOS%\hooks\QSVerified.jar %key%  
  20. if %errorlevel% gtr 0 goto err1  
  21. exit 0  
  22. :err1  
  23. echo The status of %key% is 'UAT Verified' or 'QA Verified' or 'Closed'1>&2  
  24. exit 1  
  25. :err  
  26. echo Please fill out log messages! 1>&2  
  27. exit 1   


注意:bat中字符串的比較,變量需要加上引號,如"%s%"="abc"


博文轉自xafc2370


買JIRA上CSDN,特殊折扣購買通道:

http://atlassian.csdn.net/module/btc/atlassian/prduct_detail?project_id=445&module=34&product=9

CSDN開立Atlassian中文技術論壇更多交流分享請點擊:

http://bbs.csdn.net/forums/atlassian



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章