我目前正在开发一项功能,该功能允许用户确定文件夹中的哪些文件不同步。

我的代码目前似乎运行良好,基本上我所做的是:

  • 文件夹上的 Fstat
  • 遍历结果并标记满足这两个条件的记录:
  • 修订版 != 头部修订版
  • HeadAction == 编辑

  • 话虽如此,我在我的条件中使用 HeadAction 而不是 Action 是否正确?两者有什么区别?

    根据 Perforce 的说法:
  • HeadAction :如果在仓库中,则在头部修订时采取的行动。
  • 操作:打开操作,如果在您的工作区中打开。

  • 出于某种原因,我真的不觉得这些描述有帮助。

    有人可以改写这些..吗?

    谢谢

    最佳答案

    'headAction' 是 depot 中 head 修订版的 Action - 意味着它是已提交到 depot 的最新修订版的 Action 。通常,这对于新添加(和提交)的文件是“添加”,对于已编辑和提交的文件是“编辑”,或者当文件在头部被删除(并再次提交)时是“删除”。这里还有其他选项(如“分支”、“集成”等)。

    'action' 是您当前正在对文件执行的操作。如果您打开文件进行“编辑”,则操作将是“编辑”。同样,如果您为“删除”打开文件,则操作将是“删除”。如果您提交更改,则该操作将成为 headAction。

    这是一个小例子。我创建了一个新文件并提交了它。仓库中有 1 个修订版。它的头部 Action 是“添加”。然后我编辑了文件。您可以看到 fstat 输出:

    d:\projects\tools\test>p4 fstat new_file.txt
    ... depotFile //tools/test/new_file.txt
    ... clientFile d:\projects\tools\test\new_file.txt
    ... isMapped
    ... headAction add
    ... headType text
    ... headTime 1285014691
    ... headRev 1
    ... headChange 759253
    ... headModTime 1285014680
    ... haveRev 1
    
    d:\projects\tools\test>p4 edit new_file.txt
    //tools/test/new_file.txt#1 - opened for edit
    
    d:\projects\tools\test>p4 fstat new_file.txt
    ... depotFile //tools/test/new_file.txt
    ... clientFile d:\projects\tools\test\new_file.txt
    ... isMapped
    ... headAction add
    ... headType text
    ... headTime 1285014691
    ... headRev 1
    ... headChange 759253
    ... headModTime 1285014680
    ... haveRev 1
    ... action edit
    ... change default
    ... type text
    ... actionOwner fred.flintstone
    

    如果您试图判断文件夹是否不同步,那么您似乎只需要查看“haveRev”与“headRev”。如果 headRev 是 > haveRev,则说明您已过时。如果您关心文件是否在 head 处被删除,那么查看 headAction 可能会很有用。我想我没有足够的信息来了解您的问题。

    无论如何,HTH。

    关于file - Perforce:fstat 中 "Action"和 "HeadAction"的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5352261/

    10-13 02:48