2015-01-16 63 views
2

我的目标是生成一个JSON文件,其中包含更改列表中的所有文件以及每个文件的关联行号的列表。看起来像这样的东西:是否有可能获得更改的文件列表以及从Perforce更改列表修改的行列表

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

'p4 describe'给我们列出了参与给定更改列表的文件。但是,我有兴趣获得每个文件中更改的行集。

对于这个问题的目的,工作假设是

  • 本地(个人)沙箱中的所有权限。
  • 变更集已经使用'p4变更'创建。
  • 对更改集信息进行操作的后处理实用程序也不错。
  • 可以使用'p4 diff'作为备份选项。

回答

2

p4 describe的格式化标志-d [格式化选项]在这里应该有所帮助。例如,P4描述-dc1 [修改列表]会给你一个格式是这样的:

Change 2238074 by [email protected] 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”限制每个diff打印的上下文行数,因为您只需要行号)。

有关其他选项,请参阅“p4 help describe”。

由于您正在进行大量解析和输出格式设置,因此您可能需要查看一个Perforce API而不是命令行来获取更改数据。

+0

我将上下文简化为0并在该输出上运行。 – KalyanS