查找使用svn检查更改的模块 [英] Finding the modules where changes were checked with svn

查看:56
本文介绍了查找使用svn检查更改的模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个多模块Maven项目.

I have a multi module maven project.

Project
    -Module1
    -Module2
    -Module3
    -Module4
    -Module5

我想根据修订号找到检入文件的模块.

I want to find the modules to which files were checked in based on the revision number.

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

I know svn log -v -r12345 -r12346 svn://repo-path.com/project will get the log for the changed paths but I want only the module names.

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

For eg: from the following log I want

------------------------------------------------------------------------
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以便以后在构建过程中使用它们.

I want PROJECT.SHARED , PROJECT.SRE and MODULE.CYCLE to be picked up maybe in a log file to use them later for a build process.

当我要手动传递多个修订号并生成通过svn检入更改的模块列表时,该怎么做.

How can I do this when I want to manually pass multiple revision numbers and generate the list of modules where changes were checked into via svn.

推荐答案

三个独立的任务:

  1. 正确调用svn以创建日志
  2. 解析日志
  3. 将解析后的值写到某处
  1. call svn properly to create the log
  2. parse the log
  3. Write the parsed values somewhere

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.取决于您想要什么...

3. Depends on what you want...

这篇关于查找使用svn检查更改的模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆