2012-02-08 82 views
3

我想使用我可以自動調用的腳本修改現有的Perforce標籤。目前,我知道如何使用文本編輯器選項來做到這一點:通過腳本編輯Perforce標籤的描述

p4 label <label-name> 

這在我的默認文本編輯器中打開一個臨時文件,然後我就可以輸入描述,保存文件並關閉 - 成功更新標籤。

但是,我希望能夠使用腳本自動執行此操作。我將有可用於形成我的描述的變量。

我可以使用shell腳本或bat腳本(在Windows上,但有Cygwin)。

標籤上的Perforce命令行文檔可以找到here,但它沒有幫助我。

任何想法?

回答

6

你會做類似的規定:與多行說明字段打交道時

p4 label -o > label.txt 
sed -i 's/old/new/g' label.txt # or any other automated method to do the modification 
p4 label -i < label.txt 
0

sed可用於在單行(容易)替換文本,但perl的語法更容易。

以下bash代碼導出標籤NAME_OF_CURRENT_LABEL的標籤定義,創建一個新的MY_NEW_LABEL標籤定義,然後將描述設置爲MY_NEW_DESCRIPTION。請注意,它假定表示描述文本存在,並位於上面「Description:」行下方的一行中。要只更新說明,請刪除sed行。

p4 label -o NAME_OF_CURRENT_LABEL   |   # Output label spec for NAME_OF_CURRENT_LABEL  \ 
    sed 's/^Label:.*/Label: MY_NEW_LABEL/' |   # Update label name to MY_NEW_LABEL   \ 
    perl -pe "$/='',s/^Description:\n(.*)$/Description:\n\tMY_NEW_DESCRIPTION\n/s" | # Update one-line description to MY_NEW_DESCRIPTION  \ 
    p4 label -i          # Create new label with output from pipe