У мене є багатомодульний проект 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.SHARED
, PROJECT.SRE
і MODULE.CYCLE
підбирати, можливо, у файлі журналу, щоб згодом використовувати їх для процесу збирання.
Як я можу це зробити, коли хочу вручну передати декілька номерів ревізії та генерувати список модулів, у яких були зареєстровані зміни через svn.
Відповіді:
2 для відповіді № 1Три окремі завдання:
- дзвонити
svn
правильно створити журнал - розібрати журнал
- Десь запишіть проаналізовані значення
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. Залежить від того, що ти хочеш ...