【问题标题】:Finding the modules where changes were checked with svn查找使用 svn 检查更改的模块
【发布时间】:2013-02-14 13:18:25
【问题描述】:

我有一个多模块 Maven 项目。

Project
    -Module1
    -Module2
    -Module3
    -Module4
    -Module5

我想根据修订号查找文件签入到的模块。

我知道svn log -v -r12345 -r12346 svn://repo-path.com/project 将获取更改路径的日志,但我只想要模块名称。

例如:从我想要的以下日志中

------------------------------------------------------------------------
r12345 | debajyoti.das@email.com | 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 | debajyoti.das@email.com | 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 签入更改的模块列表时,我该怎么做。

【问题讨论】:

  • 我为 singular case 回答了问题,但 OP 无法接受它并使其适用于倍数。这似乎不公平且缺乏某些东西,我希望他不会因为提供解决方案而获得报酬。
  • @sotapme 我创建了一个单独的问题,因为我的要求发生了变化。以前我提供了一些错误的输入。我将其保持打开状态,以便我可以通知您有关此问题的新要求。 PS:我没有得到报酬 :) 只是个人要求。

标签: python perl parsing svn shell


【解决方案1】:

三个独立的任务:

  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 | debajyoti.das@email.com | 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 | debajyoti.das@email.com | 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。取决于你想要什么......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2022-12-06
    • 2019-05-08
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多