6

ファイルなしで変更リストを送信しようとすると、Perforce はエラーと見なします (p4 submit ...終了コード 1 を返します)。これにより、定期的な統合ビルドがビルド サーバーで失敗します ( Zutubi の Pulse システムを使用しています)。この場合、おそらく警告付きで、ビルドを成功させたいと思います。

Pulse には終了コードの再マッピング機能がありますが、Perforce は、空の変更リストの送信の失敗と、その他の送信の失敗 (ビルドを失敗さたい検証トリガーの失敗など) を明確に区別していないようです。

頭に浮かぶすぐに明らかな(しかし、私の考えでは洗練されていない)解決策は、出力の行を数えることによって、または単に出力p4 submitを解析することによって、ターゲットチェンジリストが空であるかどうかを最初にチェックするバッチファイルでの実行をラップすることです「ファイルp4 openedp4 submitありません」というメッセージが表示され、バッチ ファイルから正常に返されます。

私が見ていないこれを処理するためのより良いテクニックはありますか?

4

3 に答える 3

5

変更リストを送信する前に、まず変更リストを削除してみてください。

p4 change -d ###

この操作は、チェンジリストが空の場合にのみ成功するため、送信しないでください(削除したばかりです)。失敗した場合は、チェンジリストにファイルがあるので、先に進んで送信してください。

ただし、ジョブを使用する場合、ジョブがアタッチされているチェンジリストは空であっても削除できないため、これは機能しません。

于 2011-02-17T20:02:17.377 に答える
2

私があなたの問題を正しく理解していれば、Perforceだけではおそらく良いテクニックはありません。これまで見てきたように、問題は、perforce コマンド ラインの実行からのリターン コードがあいまいであることです。空の変更リストの送信は本当にエラーですか? たぶん、そうではないかもしれません-あなたが尋ねる人に依存するかもしれません.

「p4」コマンドからの戻りコードを確認することは、あまりお勧めできません。あなたが提案した最善の策は、コマンドの出力を解析し、そこから必要なことを行うことです。

ほとんどのコマンドが -ztag オプションをサポートするようになりました (「p4 ヘルプの使用法」を参照)。これにより、実行したい内容に応じて、出力の解析が少し簡単になりますあなたの場合は、出力内のテキストを探して、そこから何をすべきかを決定するだけでおそらく十分です。

于 2011-02-18T13:55:00.483 に答える
0

最終的には、次のようなものを使用して、バッチ ファイルで出力を解析することになりました。

for /f "delims=" %%I in ('p4 submit -d "<message>" 2^>^&1 1^>NUL') do    
set SUBMIT_OUTPUT=%%I
if "%SUBMIT_OUTPUT%"=="No files to submit from the default changelist." exit /b 0

p4の「ファイルがありません」というメッセージは実際には標準エラー出力に正常に書き込まれるため、これが必要です。出力が「安全」と見なすメッセージである場合、ゼロの終了コードで終了します。それ以外の場合、スクリプトは、コマンドによって設定されたエラー レベルで続行されますp4

番号付きチェンジリストを使用している場合、「ファイルがありません」というメッセージは少し異なることに注意してください。

于 2014-11-07T16:42:04.360 に答える