是否有可能从 Perforce 更改列表中获取更改的文件列表和修改的行列表
Is it possible to get a list of files changed and a list of lines modified from Perforce changelist
我的目标是生成一个 JSON 文件,其中包含更改列表中所有文件的列表以及每个文件的关联行号。看起来像这样的东西:
[
{
"name":"file1.cpp",
"lines":[[1,3],[5,7]]
},
{
"name":"file2.h",
"lines":[9,14]
}
]
'p4 describe' 为我们提供了参与给定更改列表的文件列表。但是,我有兴趣了解每个文件中更改的行集。
就此问题而言,工作假设是
- 具有所有权限的本地(个人)沙箱。
- 已经使用 'p4 change' 创建了一个变更集。
- post-处理变更集信息的实用程序也很好。
- 可以使用 'p4 diff' 作为备份选项。
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 help describe"。
由于您要进行大量解析和输出格式化,您可能希望查看其中一种 Perforce API 而不是命令行来获取更改数据。
我的目标是生成一个 JSON 文件,其中包含更改列表中所有文件的列表以及每个文件的关联行号。看起来像这样的东西:
[
{
"name":"file1.cpp",
"lines":[[1,3],[5,7]]
},
{
"name":"file2.h",
"lines":[9,14]
}
]
'p4 describe' 为我们提供了参与给定更改列表的文件列表。但是,我有兴趣了解每个文件中更改的行集。
就此问题而言,工作假设是
- 具有所有权限的本地(个人)沙箱。
- 已经使用 'p4 change' 创建了一个变更集。
- post-处理变更集信息的实用程序也很好。
- 可以使用 'p4 diff' 作为备份选项。
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 help describe"。
由于您要进行大量解析和输出格式化,您可能希望查看其中一种 Perforce API 而不是命令行来获取更改数据。