我会定期获得p4同步,并想知道实际上已同步的内容。
所以我从p4.run_sync
获得了返回,这是每次更改的一个dicts列表(据我所知)
sync = p4.run_sync()
当我打印键时,它看起来像是:
sync dict Nr: 0 --------------
* totalFileSize
* rev
* totalFileCount
* clientFile
* fileSize
* action
* depotFile
* change
sync dict Nr: 1 --------------
* action
* clientFile
* rev
* depotFile
* fileSize
sync dict Nr: 2 --------------
* action
* clientFile
* rev
* depotFile
* fileSize
所以只有在第一个字典中才会有更改数字!
我如何获得其他人?我目前正在浏览其他词组的depotFiles
并从p4.fstat
获得headChange ..但这看起来很笨拙......
我实际上喜欢同步的每个更改编号,以便立即获取描述。
或者有更合适的方式吗?谢谢!
答案 0 :(得分:3)
首先p4.run_sync()
或任何p4.run_COMMAND()
返回列表而不是dict。列表中的每个元素可以是字典或字符串,具体取决于perforce服务器支持以及是否禁用了标记。
来自p4.run
的文档:
Whether the elements of the array are strings or dictionaries depends on
(a) server support for tagged output for the command, and
(b) whether tagged output was disabled by calling p4.tagged = False.
p4.run_sync()
(相当于p4 sync ...
)时,您将获得该目录下所有文件的最新信息。change
不是文件列表中其他词组的一部分。对于每个文件,您在rev
密钥中获得的修订号与depotFile
中的完整perforce路径相对应,与存储库中文件的唯一版本相对应(例如//depot/branch1/dir1/file1#4
})。
您可以使用fstat
按照以下方式使用此信息。 (不,这不是一种hacky方式,这是获取对应于特定文件和修订版的更改编号的正确方法。)
>>> result = p4.run_fstat("//depot/branch1/dir1/file1#4")
>>> print result[0]['headChange']
12345
这表明//depot/branch1/dir1/file1
的第4版是变更12345
的一部分。