我已经通过搁置一些文件创建了一个用于审核的更改列表。现在我想实施评论意见。为此,我尝试取消了解文件,但打开的p4仍显示文件位于搁置的更改列表中,而不是默认的更改列表中。我想处理这些文件,并再次将修改后的文件搁置在同一个更改列表中。如何使用p4命令执行此操作。
答案 0 :(得分:1)
如果您打算更新相同的搁置更改列表,那么实际上最好是未打开的打开文件在相同的更改列表编号中打开,而不是在默认的更改列表中。
更新现有货架(编号NNN
)的整个过程是:
p4 opened
应该说“此客户端未打开文件”。p4 unshelve -s NNN -c NNN
p4 edit -c NNN
,以便新文件也具有相同的更改列表编号。如果出现需要,您也可以通过p4 revert
来删除此更改列表编号中的文件。p4 shelve -r -c NNN
。这会将搁置的更改列表中的所有文件替换为您在工作区中以该更改列表编号打开的文件。如果您希望在搁置的更改列表中只替换一个(或几个)文件,则可以执行以下操作:p4 shelve -f -c NNN //path/to/file
仅替换搁置的更改列表中的那个文件p4 revert -w -c NNN //...
清除工作区中的所有修改过的文件,并将更改后的版本仅保留在搁置的更改列表中您可以反复重复此序列,通过多个代码审核周期来修改搁置的更改列表。
请注意,这不是您可以用于货架的唯一工作流程。例如,对于开发人员来说,更喜欢创建多个货架,每个搁置的变更清单代表您在回复评论评论等时工作演变的时间点,这也很完美,也很常见。
但更新搁置的变更清单也是一个很好的工作流程,我经常使用它。
注意一个特定的“陷阱”,这就是为什么p4 revert -w
如此重要:为了添加而打开的文件。如果您在搁置的更改列表中打开了要添加的文件,并且如果您执行简单的p4 revert
而不是p4 revert -w
,则Perforce会将添加的文件数据保留在笔记本电脑上的工作区中,而-w
标志告诉Perforce完全从您的笔记本电脑中删除该文件。当您执行p4 unshelve -s NNN -c NNN
时,如果搁置的更改列表包含为添加打开的文件,并且如果您的笔记本电脑上已存在该名称的文件,则Perforce将不会取消该文件(因为它不希望破坏笔记本电脑上已存在的数据,因此不会重新打开该文件以便在工作区中添加。当它这样做时它会给你一个“不能破坏可写文件”的消息,但是如果你心不在焉地忽略了那条消息,那么你就不会再打开文件了,当你这样做时{{1 Perforce将从架子上删除该文件,并且您将不小心从架子上删除该文件。如果您始终可靠地使用p4 shelve -r -c NNN
(在P4ALIASES文件中放置'revert => revert -w'),则很容易避免此问题。