比方說,我檢查了一個包含大量文件的更改列表(在Perforce中),我想恢復整個更改列表。有一種簡單的方法可以一舉「恢復」整個變更表嗎?有沒有簡單的方法來恢復整個P4更改列表?
目前,我做這樣的事情在改變列表的每個文件:
- P4同步//路徑/到/文件#n(其中「n」是該文件的以前版本)
- CP文件文件#n的
- P4同步//路徑/到/文件
- P4編輯//路徑/到/文件
- CP文件#n的文件
- RM文件#n的
正如您可以想象的,這對於大型更改列表來說非常麻煩。
比方說,我檢查了一個包含大量文件的更改列表(在Perforce中),我想恢復整個更改列表。有一種簡單的方法可以一舉「恢復」整個變更表嗎?有沒有簡單的方法來恢復整個P4更改列表?
目前,我做這樣的事情在改變列表的每個文件:
正如您可以想象的,這對於大型更改列表來說非常麻煩。
發佈的答案提供了正確的答案,但是請注意,P4V中還有一個實際的菜單選項可供您現在執行此操作。它是最新的2008.2 Beta版,所以應該在下週或三週正式發佈。
這個link給出了細節。
使用比以前的答案要簡單得多,但我還沒有機會自己嘗試。
更新這現在已經完全發佈。請參閱Perforce downloads。
This看起來很有趣。我沒有親自嘗試過。
Perforce的官方回答是http://kb.perforce.com/UserTasks/ManagingFile..Changelists/RevertingSub..Changelists,但程序並不比您建議的要容易得多。 @ ya23建議的腳本看起來更好。
是的, 「編輯」它更簡單,但一旦你在那裏添加和刪除,手動操作會變得棘手。 – 2008-12-02 02:51:11
我想要刪除整個更改列表時遇到同樣的問題。所以我使用下面的腳本(注意,它也會刪除更改列表的擱架和更改列表本身,如果只想恢復,請複製相關行)。 另外,請確保sed適用於您的p4版本。
#!/bin/bash
set -e
if [[ $# -ne 1 ]]; then
echo "usage: $(basename $0) changelist"
exit 1
fi
CHANGELIST=$1
#make sure changelist exist.
p4 describe -s $CHANGELIST > /dev/null # set -e will exit automatically if fails
p4 shelve -d -c $CHANGELIST 2> /dev/null || true # changelist can be shelveless
files_to_revert=$(p4 opened 2> /dev/null | grep "change $CHANGELIST" | sed "s/#.*//g")
if [[ -n "$files_to_revert" ]]; then
p4 revert $files_to_revert
fi
p4 change -d $CHANGELIST
當你想恢復一個完整的修改列表(作爲主體)的問題開始你剛剛提交,你需要一個快速的(因爲它的生產開始恢復的#N-1一個文件)...
想支持ya23的答案 - 一個Python腳本的鏈接 - 它真的很容易使用(,真的很容易錯過他的評論)
你給它要回滾的修訂,並自動準備一切(每個文件的#n-1 &合併和所有內容)......您只需提交。
出於某種原因,awk步驟不適用於我。我使用模擬的Unix命令行工具從Windows環境運行。但是,下面做工作:
p4 describe -s [changelist_number] | grep // | sed "s/\.\.\. //" | sed "s/#.*//" | p4 -ztag -x - where | grep "... path " | sed "s/\.\.\. path //"
這裏有可能的位置得到的Unix命令行工具在Windows環境中:
http://sourceforge.net/projects/getgnuwin32/?source=typ_redirect http://unxutils.sourceforge.net/
謝謝 - 我只是想它和它的工作太棒了!雖然我無法在我的Mac上運行P4V集成,但通過命令行運行腳本仍然正常。 – 2008-12-01 19:25:30
如果您鏈接的博客文章出現故障,請直接鏈接到Google代碼中的腳本:http://code.google.com/p/p4scripts/source/browse/trunk/src/p4revert.py – 2008-12-01 19:26:02
,請注意:python腳本(當前)以DOS格式保存,因此您需要將其轉換爲unix行結尾,以便在基於unix的系統(如linux和OS X)上正常工作。 – 2008-12-01 19:27:41