2008-12-01 80 views
13

比方說,我檢查了一個包含大量文件的更改列表(在Perforce中),我想恢復整個更改列表。有一種簡單的方法可以一舉「恢復」整個變更表嗎?有沒有簡單的方法來恢復整個P4更改列表?

目前,我做這樣的事情在改變列表的每個文件:

  • P4同步//路徑/到/文件#n(其中「n」是該文件的以前版本)
  • CP文件文件#n的
  • P4同步//路徑/到/文件
  • P4編輯//路徑/到/文件
  • CP文件#n的文件
  • RM文件#n的

正如您可以想象的,這對於大型更改列表來說非常麻煩。

回答

10

發佈的答案提供了正確的答案,但是請注意,P4V中還有一個實際的菜單選項可供您現在執行此操作。它是最新的2008.2 Beta版,所以應該在下週或三週正式發佈。

這個link給出了細節。

使用比以前的答案要簡單得多,但我還沒有機會自己嘗試。

更新這現在已經完全發佈。請參閱Perforce downloads

3

This看起來很有趣。我沒有親自嘗試過。

+0

謝謝 - 我只是想它和它的工作太棒了!雖然我無法在我的Mac上運行P4V集成,但通過命令行運行腳本仍然正常。 – 2008-12-01 19:25:30

+0

如果您鏈接的博客文章出現故障,請直接鏈接到Google代碼中的腳本:http://code.google.com/p/p4scripts/source/browse/trunk/src/p4revert.py – 2008-12-01 19:26:02

+0

,請注意:python腳本(當前)以DOS格式保存,因此您需要將其轉換爲unix行結尾,以便在基於unix的系統(如linux和OS X)上正常工作。 – 2008-12-01 19:27:41

0

我想要刪除整個更改列表時遇到同樣的問題。所以我使用下面的腳本(注意,它也會刪除更改列表的擱架和更改列表本身,如果只想恢復,請複製相關行)。 另外,請確保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 
0

當你想恢復一個完整的修改列表(作爲主體)的問題開始你剛剛提交,你需要一個快速的(因爲它的生產開始恢復的#N-1一個文件)...

想支持ya23的答案 - 一個Python腳本的鏈接 - 它真的很容易使用(,真的很容易錯過他的評論)

你給它要回滾的修訂,並自動準備一切(每個文件的#n-1 &合併和所有內容)......您只需提交。

相關問題