1

これが P4API のバグなのか、p4python の使用法の問題なのかはわかりません。

p4.run_print("-q", "-o " + targetPath, depotFile + "#" + rev)

...例外を与えます。

Traceback (most recent call last):
  File "C:\pyTools\p4test.py", line 218, in <module>
    main()
  File "C:\pyTools\p4test.py", line 70, in main
    copy_changes(p4, args.copy[0], args.copy[1], clientStream, targetRoot)
  File "C:\pyTools\p4test.py", line 204, in copy_changes
    p4_print_to_path(p4, change['depotFile'][i], change['rev'][i], targetPath) # Get the file@rev at the target path
  File "C:\pyTools\p4test.py", line 215, in p4_print_to_path
    p4.run_print("-q", "-o " + targetPath, depotFile + "#" + rev)
  File "C:\Python33\lib\site-packages\P4.py", line 610, in run_print
    raw = self.run('print', args, **kargs)
  File "C:\Python33\lib\site-packages\P4.py", line 533, in run
    result = P4API.P4Adapter.run(self, *self.__flatten(args))
P4.P4Exception: [P4#run] Errors during command execution( "p4 print -q -o C:/_code/target\PurleyPkg\Tool\GenBiosId\BiosIdD.env //CP_Server_BIOS/Skylake_Trunk/PurleyPkg/Tool/GenBiosId/BiosIdD.env#35" )

        [Error]: "can't create directory for  C:/_code/target\\PurleyPkg\\Tool\\GenBiosId\\BiosIdD.env\nmkdir:  C:: The filename, directory name, or volume label syntax is incorrect. "

この行をコピーしてコマンド プロンプトで使用すると、正常に動作します。

p4 print -q -o C:/_code/target\PurleyPkg\Tool\GenBiosId\BiosIdD.env //CP_Server_BIOS/Skylake_Trunk/PurleyPkg/Tool/GenBiosId/BiosIdD.env#35

...これにより、ファイルへのパスが作成され、ファイルが正しくコピーされました。したがって、API への呼び出しを正しく作成したようです。ここで何か間違ったことをしていますか?これは Python 3.x と Python 2.x の関係ですか? 2.x は試していません。p4pythonモジュールを介してprintコマンドを使用できた人はいますか?

P4API のソースが見つかりませんでした (その部分が公開されているかどうかはわかりません)。私は p4python ソースを持っていますが、デバッグ パスは 533 行目で終わり、バイナリとしてしか持っていない P4API への呼び出しがあります。

perforce を使用して、このモジュールのパブリック バグ トラッカーを見つけることができませんでした。バグを検索して送信できるように、そこにポインタを置いていただければ幸いです。

4

1 に答える 1

1

このコマンドの構文は誤解を招きます。

p4 [g-opts] print [ -a -A -o outfile ] [ -q ] file[revRange] ...

-o と出力ファイルの先頭の間にスペースはありません。この質問での問題は、「-o」の後にスペースを追加したことです

"-o " + targetPath

スペースを削除すると、この問題が修正されました。

于 2013-12-31T23:10:41.537 に答える