我有一个需要移动的文件,该文件已经被强制执行。一旦移动它需要一些编辑 - 更新包等 - 适合其新位置。我应该提交移动更改规范,然后重新打开它进行编辑,还是我可以一次性完成?如果是这样,适当的事件顺序是什么?
5 回答
我以前曾一口气完成过此操作,但根据您的构建过程,我建议您不要这样做。我一般做的是这样的:
- 移动文件。
- 如果移动需要更改才能编译,请打开它进行编辑并进行更改。
- 提交更改,告诉 perforce 重新打开文件进行编辑。
- 对路径等进行更改,这些更改不会导致编译错误,但应该更新。
- 提交这些更改并附上适当的描述。
但是,如果您愿意,您可以在上面的步骤 (2) 中进行所有更改。Perforce 可能会将新文件的标志从集成更改为添加,但它仍会记住文件的源路径。
编辑:更好的方法
我意识到我经常使用不同的方法,但是“移动”文件的想法让我分心。所以,我会推荐这些步骤:
- 将文件集成到新的路径/名称中,将之前的文件留在那里。我假设这不会破坏您的构建过程。
- 提交新文件,提交后再次检查以进行编辑。
- 对新文件和项目进行必要的更改,以便您使用新文件。
- 提交对新文件的编辑。
- [可选] 您可能需要检查分支规范以查看是否需要将旧文件映射到任何分支中的新文件。
- 创建一个用于删除旧文件的更改列表,并在稍后提交。
此方法允许将编辑与重命名/移动完全分开,同时永远不会使项目处于无法编译的状态。
另外,为什么要等待第 6 步?有时,尤其是在较大的项目中,您可能想要移动另一个人正在编辑的文件。Perforce 会很有帮助地告诉你这一点。通过等待删除文件,您允许您的同事完成编辑并提交,而无需手动移动他们的工作。提交编辑后,可以将它们整合到新文件中,然后可以安全地删除旧文件。
提交移动更改,然后重新打开以进行编辑(您也可以使用重新打开选项)。这在更改历史记录中对用户来说更具可读性。
此外,最新版本的 Perforce 会在解析后检查文件的更改。因此,在某些解决操作完成后,可能会有投诉编辑文件。
I would say always submit first then edit. It is much cleaner and makes it more obvious whats happening in your repository. Then simply checkout the file in the new location and make whatever changes. This also makes it much more obvious that the changes were made in the new location and to all it to work after renaming.
“安全”可能是这里的一个重点。一旦你重命名或移动文件,它会得到一个修订号“1”,这对于你的 Perforce 客户端来说就像一个新文件。当然,管理员将能够获取其先前的历史记录,但如果文件的编辑/版本历史记录对您很重要,那么获取旧版本会有点困难。
更新:感谢 Commodore Jaeger 和 Greg Whitfield 的启发性评论。
即使来自 Perforce 的支持,要找到一个真正的答案也并不容易,所以我想我会向每个人更新我们发现的内容:
- Perforce 将每个文档的所有版本存储在其数据库中。
- 如果它将您的文件保存为类型
<text>
,或者<ktext>
它将一个文件版本的差异存储到另一个而不是整个文件。 - 如果您签出一个文件,不对其进行任何更改,然后重新提交,它将另存为具有 0 个差异的新版本。这是可配置的,P4 可以设置为忽略没有任何实际差异的更改列表项。您可以通过在提交更改列表之前选择“还原未更改的文件...”来强制执行此行为。
- 使用“重命名/移动...”在 P4 中移动文件,以便跟踪它们。不要使用 Windows 资源管理器复制它们,然后在 P4 中重新添加它们。
- 如果您使用上下文菜单中的“重命名/移动...”功能,“新”文件将显示修订号“1”,就好像它是一个新文件一样。
- 但是,由于 P4 会保存对文件执行的每个功能,因此您实际上可以使用 CLI 命令访问任何以前的修订版(甚至恢复“已删除”的文件)
p4 filelog -i
- 如果您想获取已移动或重命名文件的修订历史记录,并且您不是管理员,则可以右键单击并选择其“修订图”,即使在分支之间移动,它也会显示文件的每个版本。
根据 Perforce 支持,通过分支或文件夹移动更轻松地跟踪修订历史是一个经常请求的功能,并且在他们当前的路线图中。
Perforce 的回答:目前,没有办法移动/重命名/集成文件并仍然保持准确的文件历史记录。
但是,如果您通过右键单击要共享的文件夹来选择“集成...”,则新分支文件夹和基础文件的文件版本将从修订 #1 开始,但集成历史分支文件夹和基础文件之间以及原始文件夹和基础文件之间将保留,您可以通过它们跟踪文件的修订历史。
是的你可以。只需重新打开以编辑分支文件(即新文件)。在 P4Win 中,有一个上下文菜单(“重新打开以进行编辑”)。