ときどき、Perforceでチェンジリストの説明のテキストを検索したいと思うことがあります。 P4Vでこれを行う方法はないようです。変更コマンドの出力をファイルにリダイレクトすることでそれを行うことができます...
p4 changes -l > p4changes.txt
...(-lスイッチは、チェンジリストの説明の全文をダンプするように指示します)、ファイルを検索しますが、これはかなり面倒です。誰かがより良い方法を見つけましたか?
送信されたチェンジリストペインにフォーカスがある場合、CTRL + Fを使用すると、チェンジリストの説明を含む任意のテキスト検索を実行できます。
唯一の制限は、サーバーからフェッチされたチェンジリストのみを検索することです。そのため、取得した数を増やす必要があります。これは、「一度にフェッチするチェンジリスト、ジョブ、ブランチマッピングまたはラベルの数」設定を介して行われます。この設定は、[編集]-> [設定]-> [サーバーデータ]に移動して確認できます。
p4 changes -L | grep -B 3 searchstring
-B 3
は、一致した文字列の前に3行を表示することを意味します。2行のコメントで変更IDを表示するには十分ですが、必要に応じて変更できます。
p4sql を使用し、「changes」データベースでクエリを実行します。 データベーススキーマの強制
クエリは次のようになります(テストされていません)
select change from changes where description like '%text%' and p4options = 'longdesc'
編集:説明に31文字以上を返すp4optionsを追加しました。
Paulの「grep」回答のPowershellバージョンを以下に示します。繰り返しますが、変更の説明内で指定された文字列を検索し、その前の3行を返し、変更IDを含めます。
p4 changes -L | select-string "search string" -Context (3,0)
less
を介して出力をパイプし、less
の検索を使用できるのに、なぜファイルにリダイレクトするのですか?
p4 changes -l | less
そして、押す / 検索文字列の入力を求めます。その後、 n 次の試合にジャンプし、 Shift+n 前のものにジャンプします。
Windows用のless
の実装は、 nxUtils の一部として利用可能です。
ゲームのエディは、Perforce Changelist Search 0.1を http://www.eddiescholtz.com/blog/archives/1 に投稿しました
しかし、私はシンプルで私のお気に入りのテキストエディタを使用するのが好きです:p4 changes -s submit // prog/stuff/main/...> temp.txt
P4sqlを使用することが、必要なことを効果的に行う唯一の方法です。私は他の方法を知りません。もちろん、選択ステートメントを使用して、チェンジリストの値の範囲を(日付、ユーザーなどを介して)制限できるという利点があります。メソッドは機能しますが、より多くのチェンジリストを生成すると、非常に迅速に面倒になります。 changesコマンドの範囲を制限できますが、p4sqlの柔軟性は得られません。
それでもコマンドラインが好きなら、次のような小さなPerlスクリプトを書くことができます:
使用法は「p4 -ztag changes -l | yourperlfilter.pl searchterm1 searchterm2 '
それで問題なければ、 p4winツールメニューに統合 できます。