2013-02-14 21 views
-3

我有一個多模塊maven項目。查找使用svn檢查更改的模塊

Project 
    -Module1 
    -Module2 
    -Module3 
    -Module4 
    -Module5 

我想根據版本號找到檢入文件的模塊。

我知道svn log -v -r12345 -r12346 svn://repo-path.com/project將獲得更改路徑的日誌,但我只想要模塊名稱。

對於例如:從下列記錄我想

------------------------------------------------------------------------ 
r12345 | [email protected] | 2013-02-06 01:40:23 -0800 (Wed, 06 Feb 2013) | 1 line 
Changed paths: 
    M /PROJECT/SHARED/branches/DEV_Branch/extensibility/src/main/java/com/companyname/extensibility/NamedExtensionPoint.java 
    M /PROJECT/SHARED/branches/DEV_Branch/extensibility/src/main/java/com/companyname/extensibility/PrePostExtensionPoint.java 
    M /PROJECT/SHARED/branches/DEV_Branch/extensibility/src/main/java/com/companyname/extensibility/helper/ExtensionConfigurationHelper.java 
    M /PROJECT/SRE/branches/DEV_Branch/ext/src/main/java/com/companyname/ext/DocumentGeneratorExt.java 
    M /PROJECT/SRE/branches/DEV_Branch/ext/src/main/java/com/companyname/ext/NamedExtensionPoint.java 
    M /PROJECT/SRE/branches/DEV_Branch/ext/src/main/java/com/companyname/ext/SystemDateBll.java 

BUG 12345678 - BLAH IMPLEMENTATION 
------------------------------------------------------------------------ 
r12346 | [email protected] | 2013-02-06 01:40:23 -0800 (Wed, 06 Feb 2013) | 1 line 
Changed paths: 
    M /MODULE/CYCLE/branches/DEV_Branch/extensibility/src/main/java/com/companyname/extensibility/FileCycle1.java 
    M /MODULE/CYCLE/branches/DEV_Branch/extensibility/src/main/java/com/companyname/extensibility/FileCycle2.java 

BUG 12345679 - BLAH IMPLEMENTATION 
------------------------------------------------------------------------ 

我想PROJECT.SHAREDPROJECT.SREMODULE.CYCLE到一個日誌文件可能被拾起後用它們來構建過程。

當我想手動傳遞多個修訂版本號並生成通過svn檢入更改的模塊列表時,我該怎麼做。

+0

我回答了[單一的情況(http://stackoverflow.com/a/14873381/1481060)然而,OP不能拿並使其適用於倍數。這看起來不公平,缺乏某些東西,我希望他不會因爲提供解決方案而獲得報酬。 – sotapme 2013-02-14 14:09:46

+0

@sotapme我創建了一個單獨的問題,因爲我的需求發生了變化。以前我提供了一些錯誤的輸入。我保持開放,以便我可以通知您有關此問題的新要求。 PS:我沒有得到報酬:)只是個人的要求。 – 2013-02-14 14:24:28

回答

2

三個獨立的任務:

  1. 電話svn正確創建日誌
  2. 分析日誌
  3. 寫的解析值某處

1.

import subprocess as sp 

svn_url = "svn://repo-path.com/project" 
revisions = [12345, 12346] 
revision_clargs = ["-r%i" % revision for revision in revisions] 
popen = sp.Popen(["svn", "log", "-v"] + revision_clargs + [svn_url],stdout=sp.PIPE,stderr=sp.PIPE) 
out,err = popen.communicate() 

2.

input_ = """ 
------------------------------------------------------------------------ 
r12345 | [email protected] | 2013-02-06 01:40:23 -0800 (Wed, 06 Feb 2013) | 1 line 
Changed paths: 
    M /PROJECT/SHARED/branches/DEV_Branch/extensibility/src/main/java/com/companyname/extensibility/NamedExtensionPoint.java 
    M /PROJECT/SHARED/branches/DEV_Branch/extensibility/src/main/java/com/companyname/extensibility/PrePostExtensionPoint.java 
    M /PROJECT/SHARED/branches/DEV_Branch/extensibility/src/main/java/com/companyname/extensibility/helper/ExtensionConfigurationHelper.java 
    M /PROJECT/SRE/branches/DEV_Branch/ext/src/main/java/com/companyname/ext/DocumentGeneratorExt.java 
    M /PROJECT/SRE/branches/DEV_Branch/ext/src/main/java/com/companyname/ext/NamedExtensionPoint.java 
    M /PROJECT/SRE/branches/DEV_Branch/ext/src/main/java/com/companyname/ext/SystemDateBll.java 

BUG 12345678 - BLAH IMPLEMENTATION 
------------------------------------------------------------------------ 
r12346 | [email protected] | 2013-02-06 01:40:23 -0800 (Wed, 06 Feb 2013) | 1 line 
Changed paths: 
    M /MODULE/CYCLE/branches/DEV_Branch/extensibility/src/main/java/com/companyname/extensibility/FileCycle1.java 
    M /MODULE/CYCLE/branches/DEV_Branch/extensibility/src/main/java/com/companyname/extensibility/FileCycle2.java 

BUG 12345679 - BLAH IMPLEMENTATION 
------------------------------------------------------------------------ 
""" 

modified_prefix = " M " 

projects = set(map(lambda x: ".".join(x.split("/")[1:3]), 
       filter(lambda x: x.startswith(modified_prefix), 
         (input_.split("\n"))))) 

3.取決於你想要什麼......