2008-12-01 83 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 &合并和所有内容)......您只需提交。

相关问题