2013-02-14 19 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.取决于你想要什么......