我的目标是生成一个JSON文件,其中包含更改列表中所有文件的列表以及每个文件的关联行号。看起来像这样:
[
{
"name":"file1.cpp",
"lines":[[1,3],[5,7]]
},
{
"name":"file2.h",
"lines":[9,14]
}
]
' p4描述'为我们提供了参与给定更改列表的文件列表。但是,我有兴趣获取每个文件中更改的行集。
就本问题而言,工作假设是
答案 0 :(得分:2)
p4 describe的格式化标志-d [格式化选项]在这里应该有所帮助。例如,p4 describe -dc1 [changelist]将为您提供如下格式:
Change 2238074 by user@client on 2014/09/02 11:23:44
Change description
Affected files ...
... //depot/path/file1.java#3 edit
Differences ...
==== //depot/path/file1.java#3 (text) ====
***************
*** 8,11 ****
credentials {
! username 'olduser'
! password 'oldpass'
}
--- 8,11 ----
credentials {
! username 'newuser'
! password 'newpass'
}
因此,您可以获得每次更改的行号和起始列。 (" 1"格式标志末尾限制了每个差异打印的上下文行数,因为您只需要行号。)
参见" p4帮助描述"其他选择。
由于您正在进行大量的解析和输出格式化,因此您可能需要查看其中一个Perforce API而不是命令行来获取更改数据。