2014-07-23 281 views
2

經過一段時間的工作,我留下了很多仍然打開的變更列表。 清理我想擺脫他們的一個子集。 因此,這是什麼使這變得複雜:Perforce:如何刪除p4v拒絕刪除的更改列表?

  • 對於客戶端的主機已更改的一部分更改。
  • 某些更改包含擱置的文件。
  • 來自更改列表的文件可能會被刪除或移動。

當上述一個或多個要點對於更改列表爲真時,p4v(可視客戶端)將不允許您刪除更改列表。

那麼刪除這些改變列表的有效方法是什麼

回答

3

首先,Perforce公司拒絕任何更改列表工作如果主機在他們的工作區不同。所以第一步是要改變工作區的主機到當前的一個。這可以通過視覺客戶端p4v輕鬆完成。打開工作區的屬性,選擇編輯並更改主機。

然後你可以使用命令行來擺脫討厭的變化列表(S)的:

# to delete a changelist 
CLIENT="name_of_your_client" 
CHANGE="number_of_the_changelist_to_delete" 
p4 -c $CLIENT shelve -c $CHANGE -d //... # Delete all shelved files from it. 
p4 -c $CLIENT revert -k -c $CHANGE //... # Revert all files from changelist (only metadata). 
p4 -c $CLIENT change -d $CHANGE # Finally delete the changelist. 

的最後一個命令更改列表將一去不復返了。

+0

另請參閱相關問題:http://stackoverflow.com/questions/12296080/how-to-delete-pending-changelist-in-perforce/12301548 –

+0

這實際上是我的出發點。如果我只想刪除舊客戶端中的某些更改列表,但保留其他客戶端,則失敗。 – Pascal

1

固定的主機名可以通過命令行來實現這樣的:

client_hostname="$(p4 client -o ${CLIENT} | grep "^Host" | awk '{print $2}')" 
p4 client -o ${CLIENT} | sed "/^Host:/ s=${client_hostname}=${HOSTNAME}=" | p4 client -i 


前段時間有同樣的問題,並寫了一個腳本(p4-delete-changelist)克服所有這些問題(和另一一個 - 刪除p4修復)。

請注意,該腳本依賴於存儲庫中的another file