假设我已完成作业A的一些代码,但在代码经过审核之前无法p4 submit
。现在我必须继续工作B,这取决于我在工作A中所做的改变。
如何确保保存作业A的更改以便以后可以单独提交(可能在进行一些进一步更改后),和保存作业B修改(diff A..B) )只到一个新的更改列表(需要在某个时候可以搁置以便它也可以被审查)?
答案 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工作流程。