2009-10-16 60 views
6

我想知道在嘗試刪除已提交的更改列表時可能會發生什麼,因爲已提交的更改列表不應該是空的。如何快速查找/刪除Perforce中的所有空白更改列表?

但是後來我正在使用教程庫,並且在整個分支上使用了obliterate命令,我可以看到有些情況下,您最終可能會得到空的已提交更改列表(需要使用-f標誌刪除)。

但是,我不知道如何使用命令行找到它們,因爲我不知道如何查找沒有關聯文件的更改列表。

有沒有簡單的方法來做到這一點?

感謝,

托馬斯

回答

0

由於我在Windows上,我創建了一個小腳本做同樣的事情在PERL,而不是殼牌,PowerShell的或PX :):

#******************************************************************************* 
# Module: delete_empty_changelist.pl 
# Purpose: A script to delete empty changelist 
# 

@list = `p4 changes -s submitted`; 

foreach $chg (@list) 
{ 
$chgnbr = (split /\s+/, $chg)[1]; 
print `p4 change -d -f $chgnbr`; 
}  
exit 0; 

注意,實際上,在任何情況下,它都不是一個非常聰明的腳本:它試圖絕對刪除每個提交的更改列表,並且perforce會阻止它執行此操作,因爲如果文件與它關聯,則會出現錯誤。

我想腳本的結果應該發送到日誌,並解析,以便只有相關的行被突出顯示。

運行腳本會產生類似的輸出:

Change 857 has 1 files associated with it and can't be deleted. 
Change 856 has 1 fixes associated with it and can't be deleted. 
Change 855 has 1 fixes associated with it and can't be deleted. 
Change 854 deleted. 
Change 853 has 1 fixes associated with it and can't be deleted. 
Change 852 has 8 files associated with it and can't be deleted. 
Change 851 has 1 files associated with it and can't be deleted. 
Change 850 has 2 files associated with it and can't be deleted. 
Change 849 has 2 files associated with it and can't be deleted. 
Change 846 deleted. 
Change 845 has 2 files associated with it and can't be deleted. 

乾杯,

托馬斯

6

啊!

我應該問在此之前已經瀏覽更多的文檔......

http://public.perforce.com/wiki/Perforce_Command_Line_Recipes

說明:刪除所有空提交變更表。
Shell命令:p4 changes -s submitted | cut -d「」-f 2 | xargs -n1 p4更改-d -f
Powershell:p4更改-s提交| %{p4 change -d -f $ _。split()[1]}
px:px -F%change%changes -s submitted |山姆斯塔福德,菲利普·卡尼亞,肖恩Hladky

咄:PX -X- -f
提供者更改-d。

托馬斯

+0

您應該接受您自己的答案(將問題標記爲已回答)。 :-) – PhiLho 2009-10-16 14:00:29

+0

我無法在Windows PC上使用建議的答案,所以我寫了一個小的PERL腳本來做同樣的事情。 :-) – 2009-10-16 14:55:11

0

這裏是一個只有DOS CMD版本。只需替換%p4streamsUser%。

for /f "tokens=* delims=" %%i in ('p4 changes -u %p4streamsUser% -s pending') do (
     for /f "tokens=1-7*" %%a in ("%%i") do (
      echo Deleting CL %%b %%h %%f 
      p4 change -d -f %%b 
     ) 
    ) 

我在Windows 7機器上。這將適用於其他幾個版本的Windows/DOS。

1

要簡單找到所有空提交變更表,但不刪除它們,你可以比較這兩個命令的輸出:

  • p4 changes -s submitted - 所有變更列表
  • p4 changes -s submitted //... - 與相關文件的所有變更表

在Windows PowerShell中,例如,運行

diff -ReferenceObject (p4 changes -s submitted) -DifferenceObject (p4 changes -s submitted //...) 
+0

好戲!謝謝 ! :) – 2015-10-07 17:01:38

相關問題