1

定期的にp4同期を取得し、実際に同期されたものを知りたいです。だから私はp4.run_sync(私が理解している限り)変更ごとのdictのリストであるリターンを取得します

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

したがって、最初のdictにのみ変更番号があります!

他の人を取得するにはどうすればよいですか?私は現在depotFiles、他のdictを閲覧し、headChangeをp4.fstat..から取得していますが、これはかなりハッキーなようです...

同期された各変更番号を実際に使用して、すぐに説明を取得したいと思います。

または、これを行うためのより適切な方法はありますか?ありがとう!

4

1 に答える 1

3

まず、すべてp4.run_sync()またはいずれかがp4.run_COMMAND()、dictではなくリストを返します。リストの各要素は、PERFORCEサーバーのサポートと、タグ付きを無効にしたかどうかに応じて、dictまたは文字列のいずれかになります。

のドキュメントから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 ...と、そのディレクトリの下にあるすべてのファイルの最新情​​報を取得できます。
  • リストの最初のファイルには、PERFORCEが同期した最新の変更番号が含まれており、そのファイルが変更された変更である必要はありません。
  • 変更番号は、そのディレクトリの下の最新の変更に対応しています。
  • リストの残りのファイルは、この冗長な情報を省略しています。これが理由です。キーchangeはファイルリストの他のdictの一部ではありません。

ファイルごとに、キーのリビジョン番号を取得します。これは、リポジトリ内のファイルの一意のバージョンrevに対応する完全なPERFORCEパスと組み合わされdepotFileます(たとえば//depot/branch1/dir1/file1#4)。

この情報は、次のように使用できますfstat。(いいえ、これはハッキーな方法ではありません。これは、特定のファイルとリビジョンに対応する変更番号を取得する正しい方法です)。

>>> result = p4.run_fstat("//depot/branch1/dir1/file1#4")
>>> print result[0]['headChange']
12345

これは、のリビジョン4が//depot/branch1/dir1/file1変更の一部として提供されたことを示しています12345

于 2013-03-21T22:56:41.337 に答える