什么是Perforce工作流程相当于这个Git工作流程?货架?

时间:2014-12-04 11:16:15

标签: git perforce

我做了一个相当大的重构,构建了一个二进制文件并提交给QA进行测试。我希望在等待QA回来的同时开始研究新功能,并假设我可能需要根据QA结果返回并更改一些内容。

在Git中,我会在分支bigRefactor上进行重构,根据它进行构建,提交给QA,然后从postBigRefactorNewFeature分支bigRefactor并继续工作。当QA返回所需的更改时,我会切换回bigRefactor,进行必要的更改,提交,然后切换到postBigRefactorNewFeature以及git rebasegit cherry-pick带来我的从bigRefactor更改为postBigRefactorNewFeature

在Perforce中,我能想到的最好的方法是将我在QA上用于QA的文件搁置在更改列表A上,并在没有本地恢复的情况下使用描述'big refactor',将本地更改(现在复制到工具架)移动到新的更改列表B,描述'post big refactor new feature',然后继续工作。当QA回来时,我将不得不搁置我在变更清单B中工作的东西,还原,从变更清单A取消搁置,进行必要的更改,然后以某种方式将变更清单B中的货架上的文件合并到工作空间中。

据我所知,没有办法将架子合并到工作区的当前状态。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用您描述的工作流程将货架用作微型分支。 Perforce采用"以某种方式合并来自货架的文件"一部分。

您可以将更改从工具架合并到工作空间的当前状态,只要您有最新的服务器版本(我相信此功能是在2011.1版本中添加的,尽管它可能稍晚于此)

您可以“放弃打开文件”&#39 ;;当您取消搁置已编辑当前已打开的文件的工具架时,Perforce会在搁置的更改和打开的文件之间安排解决方案。

整个过程与其他结果非常相似,使用起来非常简单。

这是新功能的发布说明。

#299614 (Bug #38221, #39099) **
    Unshelving a file opened for edit over a file already opened
    for edit in the workspace is now allowed. A resolve record is
    created when unshelving, and the user must then run 'p4 resolve'
    to resolve the workspace files with the shelved files. 

其他最近的搁置功能包括能够通过分支规范取消搁置,以及直接提交搁置变更而不首先取消搁置变更的能力。在最近的版本中,货架已经发展了很多。

您可能会设置一个小型测试服务器并对其进行一些实验,以便您更详细地了解它的工作原理,并在Perforce行为令人困惑的情况下提出更准确的问题。

那就是说,我自己的经验是,如果你的工作流程足够复杂,那么做“使用架子作为小型分支机构”会让人感到困惑。方法,所以在某些时候,简单地做分支是可以的。当然,Perforce完全支持分支,即使精确的机制与git不同。