2011-04-21 30 views
8

給定一個Perforce更改列表號,我想查找該待處理更改列表中所有文件的本地路徑。在Perforce中,如何找到掛起更改列表中的文件的本地路徑?

  • P4描述更改列表 - 讓我車廠路徑文件變更列表(方法1)
  • P4打開-c更改列表 - 讓我的文件車廠路徑變更列表(方法2)
  • P4具有 - 讓我爲先前已提交

使用combina所有文件的庫路徑和本地路徑的P4重刑描述P4具有,我可以找到在變更列表先前已提交給Perforce公司(並打開刪除編輯)中的所有文件的本地路徑。

但是如何打開的文件爲添加p4有不知道任何關於打開的文件add

給定一個未決的Perforce更改列表,如何找到即將添加到Perforce的文件的本地路徑?

回答

9

輸出所有未決的本地路徑一個變更的增加,你可以使用:

p4 opened -c changelist | grep -w add | sed 's/#.*//' \ 
| p4 -x - where | awk '/^\// {print $3}' 

這做同樣沒有grep的,但有一點比較模糊:基於彼得

p4 opened -c changelist | sed -n 's/\(.*\)#.*- add .*/\1/p' \ 
| p4 -x - where | awk '/^\// {print $3}' 
+0

感謝您的解決方案。有一點需要注意「p4 where」 - 如果一個文件在客戶端規範中被多次映射,那麼「p4 where」將錯誤地返回第一個映射,而不是最後一個映射,這是文件真正結束的地方。 – engtech 2011-04-26 15:44:31

+0

這聽起來像是一個錯誤,'p4 where'應該遵循客戶端視圖。如果您有支持,請使用perforce提交錯誤。 – 2011-04-26 20:00:58

+1

問題與'{print $ 3}'有關嗎? – tenpn 2011-05-03 10:43:51

1

G的回答,翻譯成powershell 2.0:

p4 opened -c changelist 
    | Where-Object{$_ -match "add"} 
    | ForEach-Object{p4 where ($_.split('#')[0])} 
    | ForEach-Object{$_.split()[2]} 
6

你當然也可以用

p4 -ztag opened -c changelist 

這將報告每個打開文件的depotFile和clientFile。 要只列出客戶端文件:

p4 -ztag opened -c changelist | grep clientFile | awk '{print $3}' 

更換//客戶端/與客戶端的根就留給讀者自己練習。

+0

請記住,awk具有grep功能,所以您可以將其縮短爲: 'p4 -ztag opened -c changelist | awk'/ clientFile/{print $ 3}'' – jorgbrown 2015-08-06 22:00:47

1
p4 opened -s -c <changelist#> | awk -F " " '{print $1}' | p4 -x - where | awk -F " " '{print $3}' 
1

在未決變更列表中的所有文件本地路徑,無需任何外部或特定於平臺的工具:

p4 -F %clientFile% fstat -Ro -F action=add [-e CHANGE] //... 

刪除「-F行動=添加」,如果你想打開的文件全部動作。

相關問題