我使用perforce进行了几次签到。我没有意识到所有这些都是不必要的。我想还原工作目录中最后一个 x 修订版的所有更改,更新版本号并签入。
我熟悉Mercurial。我想要的方式是:
$ hg revert -r last_good_changeset .
$ edit version-number.txt
$ hg ci
有没有办法在perforce中做类似的事情?
答案 0 :(得分:1)
在Perforce中,revert
表示将文件还原到签出前的状态。您要查看的内容是退回提交的更改列表。根据您的具体情况,This Perforce KB article有一些方法可以执行您尝试执行的操作。
例如,如果您有特定文件的修订版#1 - #6,并且您想要回滚到修订版#3,那么您可以这样做:
p4 sync myfilename#3
p4 edit myfilename
p4 sync myfilename
您告诉Perforce从软件仓库获取修订版本#3,检查它以进行编辑,然后尝试将其同步回#head(软件仓库中的最新版本)。由于文件是从早期版本中检出的,因此Perforce会安排解析,因此您需要告诉它您要对文件执行的操作:接受库中的版本,接受本地更改或尝试合并这两者。您将要告诉Perforce接受本地版本(或Perforce用语"您的"):
p4 resolve -ay myfilename
现在它已经解决了,你可以用以下方式提交:
p4 submit
如果您有一系列文件要执行此操作(例如,您已经编辑了给定目录中的一堆文件,并且已经多次一起检查它们,并且您想要退出所有这些),您也可以使用更改列表语法。例如,如果要将给定目录中的所有内容回滚到更改列表123,则可以执行以下操作:
p4 sync //depot/some/path/*@123
p4 edit //depot/some/path/*
p4 sync //depot/some/path/*
p4 resolve -ay //depot/some/path/*
p4 submit
这适用于任何修订修饰符(有关指定所需版本的替代方法,请参阅p4 help revisions
。)
答案 1 :(得分:0)
回滚功能专门用于执行此操作。它会返回到某个日期/时间或更改列表#并恢复您提供的窗口中的所有更改。
只需右键单击相关文件(显然是P4V)并选择回滚。它将打开这个盒子。不确定如何从命令行执行...我会看看我是否可以解决它并添加该信息。