2015-01-16 114 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