是否可以获取已更改的文件列表以及从Perforce更改列表修改的行列表

时间:2015-01-16 16:21:14

标签: version-control diff perforce

我的目标是生成一个JSON文件,其中包含更改列表中所有文件的列表以及每个文件的关联行号。看起来像这样:

[
 {
  "name":"file1.cpp",
  "lines":[[1,3],[5,7]]
 },
 {
  "name":"file2.h",
  "lines":[9,14]
 }
]

' p4描述'为我们提供了参与给定更改列表的文件列表。但是,我有兴趣获取每个文件中更改的行集。

就本问题而言,工作假设是

  • 具有所有权限的本地(个人)沙箱。
  • 已使用&#p; p4 change'
  • 创建了变更集
  • 对变更集信息进行操作的后处理实用程序也很好。
  • 可以使用' p4 diff'作为备份选项。

1 个答案:

答案 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而不是命令行来获取更改数据。