Perforce:fstat中“Action”和“HeadAction”之间的区别?

时间:2011-03-18 12:55:21

标签: file statistics action perforce directory

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

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

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

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

根据Perforce:

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

出于某种原因,我并不认为这些描述有用。

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

由于

2 个答案:

答案 0 :(得分:5)

'headAction'是仓库中头版的操作 - 这意味着它是已提交给仓库的最新版本的操作。通常,这是“添加”用于新添加(和已提交)的文件,“编辑”用于已编辑和提交的文件,或“删除”文件已在头部删除(并再次提交)。这里还有其他选项(比如'branch','integration'等)。

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

这是一个小例子。我创建了一个新文件并提交了它。仓库中有1个修订版。它的主要动作是“添加”。然后我编辑了文件。你可以看到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'vs'headRev'。如果headRev是> haveRev,你已经过时了。如果您关心文件是否在头部被删除,那么查看headAction可能会有用。我想我没有足够的信息来了解你的问题。

无论如何,HTH。

答案 1 :(得分:2)

我不确定您的确切需求,但如果您这样做

p4 sync -n <folder_name>/...

这将输出需要同步的文件。