如何在Perforce中保存和恢复已签出文件的列表?

如何在Perforce中保存和恢复已签出文件的列表?,perforce,Perforce,在perforce中,我有一种“基本工作集”的文件,我在工作时将其签出(因此是可写的)。然而,每次我提交我的更改时,这个列表都会被打乱——有些东西提交了,有些东西恢复了——然后我不得不浪费时间再次跟踪和签出所有这些文件 那么,有没有办法保存当前签出文件的列表,然后在以后再次签出这些文件 我主要使用P4V,但我有P4Win和命令行性能。不过,我更喜欢GUI解决方案 我只想保存和恢复签出文件的状态,而不是这些文件的内容,因此搁置不是解决办法 我知道“不提交未更改”和“提交后签出”选项。这是不够的。

在perforce中,我有一种“基本工作集”的文件,我在工作时将其签出(因此是可写的)。然而,每次我提交我的更改时,这个列表都会被打乱——有些东西提交了,有些东西恢复了——然后我不得不浪费时间再次跟踪和签出所有这些文件

那么,有没有办法保存当前签出文件的列表,然后在以后再次签出这些文件

  • 我主要使用P4V,但我有P4Win和命令行性能。不过,我更喜欢GUI解决方案
  • 我只想保存和恢复签出文件的状态,而不是这些文件的内容,因此搁置不是解决办法
  • 我知道“不提交未更改”和“提交后签出”选项。这是不够的。例如,我经常会有以编程方式生成的文件,当唯一不同的是“文件生成时间”时间戳时,这些文件会注册为“已更改”;我需要防止提交此类虚假修订,而且我还没有找到任何搜索和管理此类文件的实用方法,这些方法不涉及“如果未更改则还原”命令

最简单的解决方案是通过您的工作区规范排除那些生成的文件,例如“-//depot/files/ignorablefile.sh”


它们仍然可以驻留在您的本地工作区中,但应用程序不会尝试更新它们或将它们添加到源代码管理中。

您说过搁置不是答案,但对于您提出的特定问题,我认为这是最简单的解决方案(即涉及最少脚本和/或最少手动步骤的解决方案):

  • 搁置挂起的更改(我们称此更改为1000)
  • 将打开的文件移动到新的挂起更改(我们称此更改为1001)
  • 提交更改1001
  • 取消搁置更改1000
  • 同步和解析
  • 现在,您已经打开了相同的文件(取消搁置打开了它们),但在头部修订(同步和解析会执行此操作)


    现在,回顾一下你的要求,看看什么可能会让你的生活变得更轻松:与其还原你不想提交的文件(并制定某种计划,稍后再将它们取回,可能通过如上所述的搁置),我要做的是将它们移到另一个变更列表。因此,不是:

  • 识别“未更改”的文件
  • 还原未更改的文件
  • 使用“重新打开”选项提交剩余文件
  • 重新打开以前还原的文件(以某种方式)
  • 我会:

  • 识别“未更改”的文件
  • 将未更改的文件移动到另一个更改列表N
  • 使用“重新打开”选项提交剩余文件
  • 将所有文件从变更列表N移回默认变更列表
  • 除了步骤1之外,所有这些都是简单的一次性命令,您可以从任何客户端执行。就我个人而言,我会用一个脚本自动化步骤1+2(我假设可以通过编程方式确定其中一个文件中的唯一差异是否是时间戳),并将其作为“自定义工具”放入P4Win/P4V中

    p4 -ztag opened | grep depotFile | cut -d ' ' -f 3 > files.txt
    
    保存客户端中已打开的文件列表。(如果没有,可以通过任何方式构建此列表,例如运行
    p4 opened>files.txt
    并在编辑器中手动编辑
    files.txt

    获得文件列表后,您可以通过以下方式打开所有文件:

    p4 -x files.txt edit
    

    这不符合您对基于GUI的解决方案的偏好,但您可以创建
    .cmd
    脚本来执行这些操作,然后双击它们(或在它们的快捷方式上)。

    这似乎是一个不错的方法,至少对于那些您确实不想存储在Performance上的文件来说是这样。您还可以在P4IGNORE文件中描述这些文件,这会给出类似的行为;这些文件有时确实需要更新。如果它们永远不需要更新,我会把它们拖到自己的变更列表中,并且永远不会提交。