Perforce中止提交

Perforce中止提交,perforce,Perforce,我尝试使用p4 submit提交一些文件,但收到以下错误: //path/somefile.c - must resolve //path/somefile.c#146 Merges still pending -- use 'resolve' to merge files. 我只想中止提交并返回到提交之前的状态,而不是解决。我想在重新尝试提交之前编辑变更列表 说到perforce,我是一个完全的新手,是否有一个命令可以执行我正在尝试的操作?您可以恢复并撤消尚未提交的更改。如果在命令行上,您将

我尝试使用p4 submit提交一些文件,但收到以下错误:

//path/somefile.c - must resolve //path/somefile.c#146
Merges still pending -- use 'resolve' to merge files.
我只想中止提交并返回到提交之前的状态,而不是解决。我想在重新尝试提交之前编辑变更列表


说到perforce,我是一个完全的新手,是否有一个命令可以执行我正在尝试的操作?

您可以恢复并撤消尚未提交的更改。如果在命令行上,您将运行以下命令:

p4 revert //path/somefile.c
如果您使用的是P4V,则在挂起的更改列表中选择该文件,右键单击并选择“还原”

如果更改已经提交,您可以退出更改列表,或者在必要时回滚提交的集成。下面的参考资料提供了更多细节

参考资料


在我的例子中,右键单击更改列表,如果未更改,则执行还原操作


在从源分支到目标分支的合并/集成之后,我看到了这个问题

让我重申一下这个问题:在运行p4 submit并失败后,即使删除了挂起的变更列表,您实际上也没有处于提交之前的状态,因为p4 submit通过自动设置所有文件的最新版本来隐式执行p4同步操作。但是,这可能不是您准备好解决的所需修订。在p4同步发生之前,还需要执行其他操作才能恢复到状态

在此状态下,尝试运行p4 syncrev撤消解析准备也不会起任何作用

我已经找到了一种在某些情况下肯定会起作用的解决方案,尽管它不是一种非常干净的方法,而且非常手动,因此我欢迎更好的解决方案,如果可能的话,使用内置的perforce命令:


对于需要挂起解决方案的每个文件,运行p4 revert-k将恢复打开以进行编辑的文件,但将文件更改保留在工作区中,然后对该文件运行p4 CONCLIENT以再次打开以进行编辑。此时,将不再设置为使用最新版本进行解析。

提交命令已中止。您已处于提交前的状态。您可以简单地编辑变更列表。如果不想合并更改,可以从更改列表中删除该文件,如果想放弃未提交的工作,可以运行“p4 revert”。@BryanPendleton,我发现自己也有同样的问题。实际上,您的状态与以前不同,因为p4 submit通过使用所有文件的最新版本自动设置p4 resolve来隐式执行类似p4同步的操作。但是,这可能不是您准备好解决的所需修订。在p4同步发生之前,还需要执行其他操作才能恢复到状态。这并不能回答问题。没有提到要恢复更改,只是要撤消提交操作@Stefan明确表示,他希望继续进行当前编辑并重新提交。这个答案似乎与问题无关。revert-k+协调方法似乎比仅仅使用accept yours解决问题要复杂得多。我也尝试过。这不会让你处于相同的状态,因为perforce认为你已经解决了最新的问题。要处于与提交前相同的状态,您必须有一个与开始时匹配的版本。错误合并比实际执行完全合并更糟糕,因为系统错误地认为您已经合并了最新版本的所有工作。也许您应该使用工具架,而不是简单地打开文件。虽然,实际上,您似乎有一个非常具体的用例,所以最好不要再猜测了。我从来没有开始提交,然后想以这种方式完全撤销它。如果你不打算继续提交,为什么要发起提交?毕竟,一旦我开始提交,我打算完成它,所以与最新版本合并通常是我想要做的。但是,如果您经常打算停止提交,也许您应该搁置更改而不是提交更改。@Bryan,一般来说,中止提交的原因是可能有人提交了更改,但只将文件修订的子集标记为稳定。在这些稳定的修订之后,可能会有更不稳定的变化。搁置更改不会带来任何好处,因为我最终肯定会提交我的工作,但只需要先合并到一个完全稳定的文件集中。事实上,在某些情况下,某些人所做的更改只有在提交失败时才会被检测到,因为检查+提交不是一个原子操作。