2012-05-09 8 views
1

'p4 copy'コマンドでコピーされるすべてのチェンジリストで 'p4 describe'を実行したいと考えています。これはどうすればできますか?どのチェンジリストをコピーするのかを調べる方法は?

p4 copy -n from-branch/... to-branch/... | sed -e 's|.* ||' | xargs -n 1 p4 filelog 

は、ファイルごとの変更のリストを見つけて、最後の分岐の時点でリストを切り捨てるか(もしあれば)への分岐にアクションを統合する:

私のような何かを行うことができます。しかし、これは潜在的に長い時間がかかる可能性があります。より良い方法がありますか?

答えて

1

お試しp4 interchanges私は、全体のチェンジの説明を印刷して、ファイルをリスト-l-fフラグは、変更が好き:

p4 interchanges -lf from-branch/... to-branch/... 

は、私が実際にかかわらず、p4 copyでこのコマンドを使用していないので、結果は多少異なる場合があります。特にファンシーな統合(チェリーピッキングリビジョン)を行っている場合、PERFORCEはチェンジリストを既に統合されている場合でも統合する必要があると見せかけるかもしれません。

+0

はい、 'p4 copy'は 'integrate'とはちょっと違います.2つのコードラインを統合しようとしますので、チェンジリストをマージして無視するとコピー候補になります。 –

+0

@ p4-randall私は「p4インターチェンジ」を試みました。それは、私がやりたいことがうまくいくように見えます。コーナーケースは見えますか? –

0

私が考える最も簡単なことは、from-branchからto-branchにコピーされた最後のCLにラベルとタグfrom-branch/...を作成することです。分岐下のすべてが、すべて同じCLでタグ付けされている場合は、私はその改訂仕様その最後のCLだろうダイナミックラベルを使用することができます

p4 changes 'from-branch/[email protected]>copied-up-to' # where copied-up-to is the name of the dynamic label 

:次にコピーされないのCLのリストを見つけることほど簡単ですブランチからブランチにコピーされました。

0

スクリプトはおそらく正しい方法です。私はperl、python、またはruby APIを使用して、より効率的で維持しやすくしました。

基本的な概要は、次のようになります。

  • 実行p4 copy -n
  • がコピーされているソースのリビジョンを解析候補ファイルのリストを取得します。たとえば、出力の各行には "branch/sync from //depot/foo.c#1,#3"のようなものがあります。そのファイルに対して、リビジョン1〜3がどのように作成されたかを知りたいと思うでしょう。
  • 各ファイルに影響を与えチェンジ(例えばp4 changes -l //depot/foo.c#1,#3

を取得するために実行p4 changesあなたはすべてのコマンド呼び出しのための単一の接続を使用することができるよう再度、APIを使用してこれを行うことは、はるかに効率的になります。

+0

私はP4Pythonを使用していて、シェルコマンドを簡潔にしているだけだと言いました。 –

関連する問題