Perforce でチェンジリストの説明のテキストを検索するにはどうすればよいですか?
-
02-07-2019 - |
質問
時々、Perforce でチェンジリストの説明のテキストを検索したくなることがあります。P4V ではこれを行う方法はないようです。これは、変更コマンドの出力をファイルにリダイレクトすることで実現できます...
p4 changes -l > p4changes.txt
...(-l スイッチは変更リストの説明の全文をダンプするように指示します) そしてファイルを検索しますが、これはかなり面倒です。誰かがより良い方法を見つけましたか?
解決
送信された変更リスト ペインにフォーカスがある場合、CTRL+F を押すと、変更リストの説明を含む任意のテキスト検索を実行できます。
唯一の制限は、サーバーからフェッチされた変更リストのみを検索するため、取得する数を増やす必要がある場合があります。これは、[編集] -> [設定] -> [サーバー データ] に移動して確認できる、[一度にフェッチするチェンジリスト、ジョブ、ブランチ マッピング、またはラベルの数] 設定によって行われます。
他のヒント
p4 changes -L | grep -B 3 searchstring
-B 3
これは、一致した文字列の前の 3 行を表示することを意味し、2 行のコメントで変更 ID を表示するだけで十分ですが、必要に応じて変更できます。
私が使う p4sql そして、「変更」データベースに対してクエリを実行します。こちらが perforceデータベーススキーマ
クエリは次のようになります(未テスト)
select change from changes where description like '%text%' and p4options = 'longdesc'
編集:説明に 31 文字を超える文字を返す p4options を追加しました。
これは、Paul の「grep」回答の Powershell バージョンです。再度、変更の説明内で指定された文字列を検索し、変更 ID を含むその前の 3 行を返します。
p4 changes -L | select-string "search string" -Context (3,0)
出力をパイプできるのに、なぜファイルにリダイレクトするのか less
そして使用します less
の検索?
p4 changes -l | less
そして、 を押します / 検索文字列の入力を求めるプロンプトを表示します。その後、 n 次の試合にジャンプします、そして シフト+n 前のものにジャンプします。
の実装 less
for Windows は、の一部として利用可能です UnxUtils.
p4sql を使用することが、実際に必要なことを効果的に実行する唯一の方法です。それ以外の方法は知りません。もちろん利点は、select ステートメントを使用してチェンジリスト値の範囲 (日付、ユーザーなど) を制限できることです。この方法は機能しますが、より多くの変更リストを生成すると、すぐに煩雑になります。変更コマンドの範囲を制限することはできますが、p4sql の柔軟性は得られません。
Eddie on Games が Perforce Changelist Search 0.1 を次の場所に投稿しました。 http://www.eddiescholtz.com/blog/archives/130
ただし、私はお気に入りのテキスト エディターを次のような単純な方法で使用するのが好きです。p4 の変更 -s が送信されました //prog/stuff/main/...>temp.txt
それでもコマンド ラインが気に入っている場合は、次のような小さな Perl スクリプトを作成できます。
- レコードセパレーター$/を変更して、newline " n n"を2倍にして、Ztagged P4出力の完全なレコードに入力をフィルタリングします。
- スキャン '/^...desc /..// 'argsからの正規表現を備えた部分。
使用法は 'p4 -ztagの変更-l |のようなものになりますyourperlfilter.pl searchterm1 searchterm2 '
それがうまくいった場合は、できます p4winツールメニューに統合します.