查找使用svn检查更改的模块 [英] Finding the modules where changes were checked with 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.SHARED
,PROJECT.SRE
和MODULE.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.
推荐答案
三个独立的任务:
- 正确调用
svn
以创建日志 - 解析日志
- 将解析后的值写到某处
- call
svn
properly to create the log - parse the log
- 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屋!