如何将Perforce更改列表基于另一个挂起的更改列表

时间:2016-10-31 09:59:19

标签: version-control perforce

假设我已完成作业A的一些代码,但在代码经过审核之前无法p4 submit。现在我必须继续工作B,这取决于我在工作A中所做的改变。

如何确保保存作业A的更改以便以后可以单独提交(可能在进行一些进一步更改后),保存作业B修改(diff A..B) )到一个新的更改列表(需要在某个时候可以搁置以便它也可以被审查)?

4 个答案:

答案 0 :(得分:3)

这是分支的一个很好的用例。试图用货架做所有事情的摩擦是搁置的修改是无常的,所以你不能拥有基于它们的历史。如果您创建了一个分支,则可以将更改与其他人正在处理的文件隔离开来,但仍然可以将其保存在永久性的位置。

黄金法则是"分支不兼容的提交政策"。在这种情况下,您需要提交未经审核的工作(这样您可以在其上做更多的工作),但您所在的分支机构不允许未经审核的工作 - 所以建立一个新的分支机构!

我假设您在此示例中使用了流,因为它可以让一切更快;非托管分支也会发生同样精确的工作流程,它只需输入更多命令。

因此,让我们假设您目前正在使用" main"并且您有未提交的更改。将您的更改带入一个新的分支(我会称之为#34; dev-bob"假设您的名字是Bob),如下所示:

p4 switch -r -c dev-bob

现在提交:

p4 submit

现在继续进行其他更改。

将您的更改纳入" main"并搁置他们审查做:

p4 switch main
p4 merge --from dev-bob
p4 resolve -am
p4 shelve

让一切都达到特定的变化" A"来自dev-bob你要添加" @ A"合并命令。

答案 1 :(得分:2)

我认为这在perforce中是不可能的。

一种解决方法是拥有两份工作空间。完成作业A后,搁置第一个工作区中的更改列表。保留此代码副本,直到您的代码审核完成。

现在,转到第二个工作空间,取消搁置保存的作业A的更改列表,并为作业B做出您想要做的任何更改。

将作业A提交给服务器后,在第二个工作区上执行 p4 sync p4 diff 将显示在作业A之上完成的更改。

答案 2 :(得分:0)

如果我能在这里提出意见。

永远不会出现妨碍您提交代码的情况。作为开发人员,您应该能够随时提交您想要的任何代码。代码应在未提交之后进行审核。源代码控制的全部意义在于它控制源代码,一旦代码在你可以回滚,修改它,删除它,但你有一个记录。

如果您被迫跳过篮球去做与您所描述的基本相同的事情,那么您公司的工作流程就会受到损害,或者管理员不了解如何以最琐碎的方式使用perforce。

有很简单的方法可以保持你的代码分开,直到它被审查(分支是最简单的),保持它不受源控制不是其中之一。

想象一下,如果您在检查代码之前无法检查代码,github.com将如何停止运作。

答案 3 :(得分:0)

您是否考虑过使用Perforce对'clone,fetch,push'的支持?

您的服务器和客户端都必须至少在2015.1,但是一旦它们存在,您可以在工作站上制作代码的克隆副本,提交代码的各种更改,制作分支机构,将分支机构或架子推送到您的审核服务器审查等。

除了在克隆和中央服务器之间复制更改之外,您还可以将更改从一个DVCS实例复制到另一个实例,从而启用许多开发人员认为方便的许多DVCS工作流程。