【问题标题】:What's the Perforce workflow equivalent to this Git workflow? Shelves?与此 Git 工作流程等效的 Perforce 工作流程是什么?货架?
【发布时间】:2014-12-04 22:58:28
【问题描述】:

我进行了相当大的重构,构建了一个二进制文件并提交给 QA 进行测试。我想在等待 QA 回来的同时开始开发新功能,并假设我可能必须返回并根据 QA 结果进行一些更改。

在 Git 中,我会在分支 bigRefactor 上进行重构,基于它进行构建,提交给 QA,然后从 bigRefactor 分支 postBigRefactorNewFeature 并继续工作。当质量检查返回所需的更改时,我会切换回bigRefactor,进行所需的更改,提交,然后切换到postBigRefactorNewFeaturegit rebasegit cherry-pick,将我的更改从bigRefactor 带到@987654329 @。

在 Perforce 中,我能想到的最好办法是将我用于 QA 的文件搁置在更改列表 A 上,并带有描述为“大重构”而不在本地恢复,将本地更改(现在复制到架子上)移动到新的带有描述“发布大重构新功能”的更改列表 B,然后继续工作。当 QA 回来时,我将不得不搁置我在变更列表 B 中正在处理的内容,从变更列表 A 中恢复、取消搁置,进行所需的更改,然后以某种方式将变更列表 B 中搁置的文件合并到工作区中。

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

【问题讨论】:

    标签: git perforce


    【解决方案1】:

    是的,您可以使用您描述的工作流程将书架用作微型分支。 Perforce 以“以某种方式从架子上合并文件”部分为例。

    只要您有足够新的服务器版本,您就可以将架子上的更改合并到工作区的当前状态(我相信这个功能是在 2011.1 版本中添加的,尽管它可能比那晚了一点) .

    您可以“取消搁置到打开的文件中”;当您取消搁置对您当前打开的文件进行编辑的架子时,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 不同。

    【讨论】:

    • 感谢您的回答。又使用了 P4 几个月,货架并没有真正削减它。不幸的是,Perforce 分支在某些方面严重缺乏 - 例如,没有办法只挑选分支上两个修订版之间的差异,所以如果我在重构中修复分支上的错误,我不能带来 just 将错误修复返回到主分支,因为 Perforce 想要合并整个文件,而不仅仅是修复错误的 diff 块。
    • 我一直按照你的描述挑选。我只是这样做:p4 集成 //depot/branch/...@=NNN //depot/main/...,其中 NNN 是我想要集成的特定变更列表。还有更多示例:有关详细信息,请参阅“p4 帮助修订”。
    • “没有办法只挑选一个分支上两个修订版之间的差异”。这意味着,如果我提交 branch/file.cs#1、branch/file.cs#2、branch/file.cs#3,则无法在 #2 和#3 到 main/file.cs,忽略 #1 和 #2 之间的差异。
    • 对我来说,'p4 integration branch/file.cs#3,#3 main/file.cs' 完全正确。但也许我还是误解了。也许您只需要更详细地说明它,或者可能设置一个测试服务器并更多地使用它? 'p4 集成' 的语法确实非常复杂,并且需要一段时间来学习如何使用它。您是否尝试过使用可视化客户端,例如 P4V?
    猜你喜欢
    • 1970-01-01
    • 2017-06-09
    • 2019-01-07
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 2020-03-08
    相关资源
    最近更新 更多