web-dev-qa-db-ja.com

Perforceでチェンジリストの説明のテキストをどのように検索しますか?

ときどき、Perforceでチェンジリストの説明のテキストを検索したいと思うことがあります。 P4Vでこれを行う方法はないようです。変更コマンドの出力をファイルにリダイレクトすることでそれを行うことができます...

p4 changes -l > p4changes.txt

...(-lスイッチは、チェンジリストの説明の全文をダンプするように指示します)、ファイルを検索しますが、これはかなり面倒です。誰かがより良い方法を見つけましたか?

65
raven

送信されたチェンジリストペインにフォーカスがある場合、CTRL + Fを使用すると、チェンジリストの説明を含む任意のテキスト検索を実行できます。

唯一の制限は、サーバーからフェッチされたチェンジリストのみを検索することです。そのため、取得した数を増やす必要があります。これは、「一度にフェッチするチェンジリスト、ジョブ、ブランチマッピングまたはラベルの数」設定を介して行われます。この設定は、[編集]-> [設定]-> [サーバーデータ]に移動して確認できます。

61
Greg Whitfield

p4 changes -L | grep -B 3 searchstring

-B 3は、一致した文字列の前に3行を表示することを意味します。2行のコメントで変更IDを表示するには十分ですが、必要に応じて変更できます。

19
Paul Medcraft

p4sql を使用し、「changes」データベースでクエリを実行します。 データベーススキーマの強制

クエリは次のようになります(テストされていません)

select change from changes where description like '%text%' and p4options = 'longdesc'

編集:説明に31文字以上を返すp4optionsを追加しました。

17
jop

Paulの「grep」回答のPowershellバージョンを以下に示します。繰り返しますが、変更の説明内で指定された文字列を検索し、その前の3行を返し、変更IDを含めます。

p4 changes -L | select-string "search string" -Context (3,0)
7
Julian Martin

lessを介して出力をパイプし、lessの検索を使用できるのに、なぜファイルにリダイレクトするのですか?

p4 changes -l | less

そして、押す / 検索文字列の入力を求めます。その後、 n 次の試合にジャンプし、 Shift+n 前のものにジャンプします。

Windows用のlessの実装は、 nxUtils の一部として利用可能です。

3
jamesdlin

ゲームのエディは、Perforce Changelist Search 0.1を http://www.eddiescholtz.com/blog/archives/1 に投稿しました

しかし、私はシンプルで私のお気に入りのテキストエディタを使用するのが好きです:p4 changes -s submit // prog/stuff/main/...> temp.txt

1
WireGuy

P4sqlを使用することが、必要なことを効果的に行う唯一の方法です。私は他の方法を知りません。もちろん、選択ステートメントを使用して、チェンジリストの値の範囲を(日付、ユーザーなどを介して)制限できるという利点があります。メソッドは機能しますが、より多くのチェンジリストを生成すると、非常に迅速に面倒になります。 changesコマンドの範囲を制限できますが、p4sqlの柔軟性は得られません。

1
Mark

それでもコマンドラインが好きなら、次のような小さなPerlスクリプトを書くことができます:

  • レコード区切り文字$ /を二重改行「\ n\n」に変更して、入力をztagged p4出力の完全なレコードにフィルタリングします。
  • 引数からの正規表現で「/ ^ ... desc /..//」部分をスキャンします。

使用法は「p4 -ztag changes -l | yourperlfilter.pl searchterm1 searchterm2 '

それで問題なければ、 p4winツールメニューに統合 できます。

0
Epu