2009-03-04 47 views
3

私はPERFORCEクライアント上でいくつかのファイルをチェックアウトしました。 コマンド 'p4 opened'でこれらのファイルのリストを取得することができます これは// depot/...という形でパスを与えます これはローカルパス上のパスにどのように変換できるのか知りたいのですがクライアント・パス) 私はちょうど一日の終わりの前にそれらのバックアップに事前 で 感謝をバッチファイルを作成できるように、ウダイPerforceは開いているファイルのローカルコピーを保存します

+0

この質問をチェックアウトすることができます:http://stackoverflow.com/questions/300692/how-to-convert-perforce-depot-locations-to-client-view-locations –

答えて

5

p4 whereを使用すると、デポファイル指定をローカルファイル指定に変換できます。 forループの本体は、より複雑なマッピングのために複数回実行することが

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

注、このように次のようなものが役立つかもしれませんが、Windowsのバッチファイルからp4 whereの出力を解析する

p4 whereのドキュメントに記載されているものと同じです。これらを処理する必要がある場合は、より複雑な解析を行う必要があります。

+0

念頭におくべきことは、p4はファイルの場所だけを報告することです。それが存在するかどうかを確認することはありません。 –

+0

@ジョナトン:良い点。デポに存在する場合でも、クライアントに同期されないことがあります。 – bk1e

1

はとしてそこにあなたがあなたのファイルシステムのパスに//デポのマッピングを定義しているあなたのp4クライアントをチェック。 // depotに置き換えてファイルのローカルパスを取得し、バックアップすることができます。

バッチファイルでそのプログラムをどのように取得できるかわかりません。

2
p4 where filename 

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

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

+0

バッチを使用して説明したOP Windowsを意味するファイル。切断コマンドは使用できない場合があります。 –

3

なぜあなたは、Perforce自体を使用しているのを避けて毎日ファイルをバックアップする必要があると感じているかもしれません。

開発ブランチを使用し、毎日の終わりに変更を提出すると(実際には「編集用の再オープン」フラグがチェックされています)、実際にはより簡単で効果的です。最初は、PERFORCEを使用して、自分の手動システムではなく、変更を追跡しています。

開発ブランチを使用するということは、あなたのワークメイトを台無しにすることなくこれらのチェックインを実行できることを意味します。

考えてみる価値のある提案です、それだけです。

+0

私の経験では、perforce以外のローカルでのサブミット間のバックアップを維持することは、ブランチを維持しようとするよりも迅速かつ危険性が低くなります。 – justinhj

+1

これは間違いなくPERFORCEを使う正しい方法です - 残念ながら、私の経験ではほとんどの開発者はこれを正しく行う方法を学ぶにはあまりにも怠惰です(多分忙しいかもしれません)。 – cristobalito

1

中チェンジからPERFORCEの開いているファイルをBATスクリプトのコピーを以下の
(%1コマンドライン引数)

P4が開か-c%1>オープン/ F「トークン= 1%1.TXT
delims =# "%% i IN(open-%1.txt)doコール:add-to-zip %% i

:/ zの/ F" tokens = 3 "%% j INの場合は、追加の郵便番号
( 'p4 where%1')zip [zip-file-name] %% j

0

ありがとうございました:-)私は開かれたファイルのクライアントパスを正確に探すことができるコマンドを探していましたeファイルをバックアップするのと同じ理由。コマンドだけでなく、スクリプトも用意されています:

+1

こんにちは.. これは正しい答えのコメントにこれを言及できました。 :) – Uday

4

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

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 
1

このバッチスクリプトは、個々の変更リストにファイルを圧縮することができます。/F "tokens = 1,5,6 delims =#" %% IN( 'p4 opened')do/f "tokens = 3" %% j IN( 'p4 where %% a')の場合、

それはこのようにファイルを作成しますジップ%% bの%% Cは%% jの

の操作を行います。
change571620.zip
change673450.zip
change723098.zip
defaultchange.zip

0

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

関連する問題