4

perforce クライアントでいくつかのファイルをチェックアウトしました。これらのファイルのリストは、コマンド 'p4 open' で取得できます //depot/... の形式でパスを提供します。これをローカル パス (つまりクライアント パス) のパスに変換する方法を知りたいです。一日の終わりの直前にそれらをバックアップするバッチファイルを作成できるように、事前に感謝しますUday

4

9 に答える 9

6

このバッチ スクリプトは、ファイルを個別の変更リストに圧縮できます。

for /F "tokens=1,5,6 delims=# " %%a IN ('p4 opened') do for /F "tokens=3" %%j IN ('p4 where %%a') do zip %%b%%c %%j

次のようなファイルが作成されます。

change571620.zip
change673450.zip
change723098.zip
defaultchange.zip
于 2009-10-09T03:41:02.610 に答える
5

を使用p4 whereして、デポのファイル仕様をローカルのファイル仕様に変換できます。

Windows バッチ ファイルからの出力を解析するにはp4 where、次のようなものが役立つ場合があります。

for /f "tokens=3" %%i in ('p4 where %my_depot_filespec%') do echo %%i

p4 whereドキュメントで説明されているような、より複雑なマッピングでは、for ループの本体が複数回実行される場合があることに注意してください。それらを処理する必要がある場合は、より複雑な解析が必要になる場合があります。

于 2009-03-04T05:51:56.990 に答える
4

また、Perforce 自体を使用する以外に、1 日の終わりにファイルをバックアップする必要があると感じる理由を検討することもできます。

開発ブランチを使用して、1 日の終わりに (「編集のために再オープン」フラグをチェックして) 変更を送信する方が、実際にはより簡単で優れていることに気付くかもしれません。まず、独自の手動システムではなく、Perforce を使用して変更を追跡します。

開発ブランチを使用すると、同僚を台無しにするリスクなしにこれらのチェックインを実行できることを意味します。

検討する価値のある提案、それだけです。

于 2009-03-05T09:46:27.810 に答える
2
p4 where filename

これはあなたが探しているコマンドです。

ローカル ファイル システム上のファイルのデポ パス、クライアント パス、および絶対パスが一覧表示されます。出力をパイプしcutて絶対パスを選択し、それらをコピーするだけです。

于 2009-03-04T05:51:30.610 に答える
2

このバッチ スクリプトは、ファイルを個別の変更リストに圧縮できます。

for /F "tokens=1,5,6 delims=#" %%a IN ('p4 open') do for /F "tokens=3" %%j IN ('p4 where %%a') do zip % %b%%c %%j

次のようなファイルが作成されます:
change571620.zip
change673450.zip
change723098.zip
defaultchange.zip

于 2009-10-09T03:53:13.633 に答える
1

次の BAT スクリプトは、保留中の変更リスト ( %
1 コマンド ライン引数)から perforce オープン ファイルをコピーします 。 %1.txt) do call :add-to-zip %%i :add-to-zip for /F "tokens=3" %%j IN ('p4 where %1') do zip [zip-file-name ] %%j





于 2009-05-11T00:57:11.090 に答える
1

参考までに、v2012/2013 の時点で、毎日のバックアップ操作には Perforce のシェルビング機能を使用したほうがよいでしょう。チーム内の他のユーザーもこれらのシェルフにアクセスできるようになります。このようにバックアップに使用すると、あまり気にしない中間ファイルの亜種 (またはその一部がチェックインに適さないもの) によって履歴が汚染されるのを防ぐことができます。

于 2014-06-30T20:04:31.630 に答える
1

//デポのファイルシステムパスへのマッピングを定義しているので、p4クライアントを確認してください。//depot をこれに置き換えて、バックアップできるようにファイルのローカル パスを取得します。

バッチファイルでプログラムでそれを取得する方法がわかりません。

于 2009-03-04T04:51:40.067 に答える
0

たくさんありがとう:-)ファイルをバックアップするのとまったく同じ理由で、開いたファイルのクライアントパスを正確に与えることができるコマンドを探していました。コマンドだけでなく、スクリプトも取得しました:-)

于 2009-08-31T15:23:45.697 に答える