我想知道在嘗試刪除已提交的更改列表時可能會發生什麼,因爲已提交的更改列表不應該是空的。如何快速查找/刪除Perforce中的所有空白更改列表?
但是後來我正在使用教程庫,並且在整個分支上使用了obliterate命令,我可以看到有些情況下,您最終可能會得到空的已提交更改列表(需要使用-f標誌刪除)。
但是,我不知道如何使用命令行找到它們,因爲我不知道如何查找沒有關聯文件的更改列表。
有沒有簡單的方法來做到這一點?
感謝,
托馬斯
我想知道在嘗試刪除已提交的更改列表時可能會發生什麼,因爲已提交的更改列表不應該是空的。如何快速查找/刪除Perforce中的所有空白更改列表?
但是後來我正在使用教程庫,並且在整個分支上使用了obliterate命令,我可以看到有些情況下,您最終可能會得到空的已提交更改列表(需要使用-f標誌刪除)。
但是,我不知道如何使用命令行找到它們,因爲我不知道如何查找沒有關聯文件的更改列表。
有沒有簡單的方法來做到這一點?
感謝,
托馬斯
由於我在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.
乾杯,
托馬斯
啊!
我應該問在此之前已經瀏覽更多的文檔......
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。
托馬斯
這裏是一個只有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。
要簡單找到所有空提交變更表,但不刪除它們,你可以比較這兩個命令的輸出:
p4 changes -s submitted
- 所有變更列表p4 changes -s submitted //...
- 與相關文件的所有變更表在Windows PowerShell中,例如,運行
diff -ReferenceObject (p4 changes -s submitted) -DifferenceObject (p4 changes -s submitted //...)
好戲!謝謝 ! :) – 2015-10-07 17:01:38
您應該接受您自己的答案(將問題標記爲已回答)。 :-) – PhiLho 2009-10-16 14:00:29
我無法在Windows PC上使用建議的答案,所以我寫了一個小的PERL腳本來做同樣的事情。 :-) – 2009-10-16 14:55:11