代码之家  ›  专栏  ›  技术社区  ›  sblundy

我可以安全地在perforce中编辑重命名的文件吗

  •  6
  • sblundy  · 技术社区  · 18 年前

    我有一个文件需要移动,已经在perforce下了。一旦移动,它需要一些编辑-更新包等-适合其新位置。我应该提交move changespec,然后重新打开它进行编辑,还是可以一次性完成?如果是,事件的适当顺序是什么?

    5 回复  |  直到 18 年前
        1
  •  7
  •   Caleb Huitt - cjhuitt    18 年前

    我以前一次就做过,但根据您的构建过程,我建议您不要这样做。我通常做的是:

    1. 如果移动需要更改才能编译,请打开它进行编辑并进行更改。
    2. 提交更改,通知Performance重新打开文件进行编辑。
    3. 对路径等进行更改,这些更改不会导致编译错误,但应该更新。
    4. 提交带有适当说明的更改。

    编辑:更好的方法

    我意识到我经常使用不同的方法,但“移动”文件的想法分散了我的注意力。因此,我建议采取以下步骤:

    1. 将文件集成到新的路径/名称中,将上一个文件保留在那里。我假设这不会破坏您的构建过程。
    2. 提交新文件,提交后再次签出以进行编辑。
    3. 提交对新文件的编辑。
    4. [可选]您可能需要检查分支规范,以查看是否需要将旧文件映射到任何分支中的新文件。
    5. 创建用于删除旧文件的更改列表,并在稍后提交。

    此方法允许编辑与重命名/移动完全分离,同时不会使项目处于无法编译的状态。

        2
  •  2
  •   Kris Kumler    18 年前

    提交移动更改,然后重新打开进行编辑(也可以使用重新打开选项)。 在更改历史记录中,用户更易于阅读。

        3
  •  1
  •   Toby Allen mercator    18 年前

    我会说总是先提交然后编辑。它更干净,使您的存储库中发生的事情更加明显。然后只需在新位置签出文件并进行任何更改。这也使得更明显的是,这些更改是在新位置进行的,并且所有这些更改都是在重命名后进行的。

        4
  •  0
  •   Greg Whitfield    18 年前

    是的,你可以。只需重新打开以编辑分支文件(即新文件)。在P4Win中,有一个上下文菜单(“重新打开以进行编辑”)。

        5
  •  0
  •   anatolyg    5 年前

    “安全”可能是这里的一个要点。一旦您重命名或移动该文件,它将获得一个修订号“1”,对于您的Perforce客户端来说,它看起来像一个新文件。当然,管理员将能够获取其以前的历史记录,但是如果文件的编辑/版本历史记录对您很重要,那么获取旧版本就有点困难。

    更新:感谢准将杰格和格雷格·惠特菲尔德的启发性评论。

    • Perforce将每个文档的所有版本存储在其数据库中。
    • <text> 或 <ktext> 然后它存储一个文件版本到另一个文件版本的差异,而不是整个文件。
    • 如果签出文件,不对其进行任何更改,然后重新提交,则该文件将另存为具有0差异的新版本。这是可配置的,P4可以设置为忽略变更列表项,而不存在任何实际差异。在提交变更列表之前,可以通过选择“还原未更改的文件…”强制执行此行为。
    • 使用“重命名/移动…”移动P4中的文件,以便跟踪它们。不要使用Windows资源管理器复制它们,然后在P4中重新添加它们。
    • 如果使用关联菜单中的“重命名/移动…”功能,“新建”文件将显示修订号“1”,就像它是一个新文件一样。
    • 但是,由于P4保存了对文件执行的所有功能,因此您实际上可以使用CLI命令访问任何以前的版本(甚至恢复“已删除”的文件) p4 filelog -i
    • 如果您想查看已移动或重命名文件的修订历史记录,而您不是管理员,则可以右键单击并选择其“修订图”,即使在分支之间移动,该图也会显示文件的每个版本。

    根据Perforce支持,通过分支或文件夹移动更容易跟踪修订历史是经常要求的功能,并且在他们当前的路线图中。

    Perforce的答案是:目前,没有一种方法可以移动/重命名/集成文件,同时仍然保持精确的文件历史记录。

    但是,如果通过右键单击要共享的文件夹选择“集成…”,则新分支文件夹和基础文件的文件版本将从修订版#1开始,但分支文件夹和基础文件以及原始文件夹和基础文件之间的集成历史记录将保留,您可以通过它跟踪文件的修订历史记录。