13

短縮版:

P4で分岐した後、分岐の「ソース」チェンジリストを見つけるにはどうすればよいですか?

ロングバージョン:

私のプロジェクトのメインブランチが

//project/main/...

ここで提出された最新のチェンジリストは@123で、リリース1.0のブランチを作成することにしました。

//project/1.0/...

P4Vから、新しいチェンジリストが作成され(たとえば、@ 130)、解決されて送信されます。

CLIからは、次のようになります。

p4 integrate -c 123 -o //project/main/... //project/1.0/...
p4 submit

後で、の下のチェンジリストを見て//project/1.0、多くの分岐ファイルを含む@130チェンジリストを確認します。チェンジリスト番号を確認するにはどうすればよいですか。これは元々 (つまり、@ 123)から分岐したものですか?

4

7 に答える 7

8

p4 changes送信された変更リストのリストが表示され、オプションで特定のパスにフィルターされます。

p4 changes //project/main/...
Change 123 ... 'Very last change.'
Change 122 ... 'Next-to-last change.'
Change 100 ... 'Only two changes to go...'
...

驚くことではありませんが、ご存知のように、p4 changesこれらすべての変更を1つの変更に統合する場合はあまり役に立ちません。

p4 changes //project/1.0/...
Change 130 ... 'Integrated everything from main.'

秘訣は、指定されたファイルに統合された変更リストを含むオプションを使用-iすることです

p4 changes -i //project/1.0/...
Change 130 ... 'Integrated everything from main.'
Change 123 ... 'Very last change.'
Change 122 ... 'Next-to-last change.'
Change 100 ... 'Only two changes to go...'
...

必要なものを正確に取得するには( )、からの出力をフィルタリングして、によってリストされた変更を削除する(そして、最新の残りの変更を取得123する)スクリプトを作成する必要があります。p4 changes -i //project/1.0/...p4 changes //project/1.0/...

(探索するときに、-m maxこのオプションが役立つこともよくあります。これにより、変更が最新の「最大」に制限されます。これにより、変更が多い場合に出力が画面外に流れないようになります。)

于 2010-11-09T16:03:48.027 に答える
1

あなたがやりたいことを実行する簡単なコマンドを私は知りません。少しスクリプトを作成する意思があり、コマンドを高速に実行する必要がない場合は、すべての分岐ファイルに対して次のようなスクリプトを作成してみてください。

  1. ターゲットファイルのソースファイル/リビジョンを見つけます。

    p4 filelog //project/1.1/foo.bar#1
    //project/1.1/foo.bar
    ...#12009/07/10の6416ブランチをfoo@bar(テキスト)によって変更'リリース1.1'
    ..。 ... //project/main/foo.bar#1、#2から分岐

  2. ソースファイル/リビジョンが送信された変更リストを取得します。

    p4 fstat //project/main/foo.bar#2
    ... depotFile //project/main/foo.bar
    ... headAction edit
    ... headType text
    ... headTime 1201771167
    ... headRev 2
    ... headChange 5353
    ... headModTime 1201770971

  3. ブランチ内のすべてのファイルに対して繰り返し、最も高い変更番号(上記のheadChange)を選択します。これは、その特定のファイルにブランチする前に親に送信された最新の変更である必要があります。たとえば、「p4 files //project/1.0/...#1」を使用して、すべての分岐ファイルの完全なリストを取得できます。

(または、簡単な方法でPerforceのサポートを依頼することもできます)

于 2010-11-04T13:40:20.263 に答える
1

これまでのところ、ブランチのソースまたはルートのチェンジリストを見つけるためのコードを提供している回答はないので、それを行うためのワンライナーを提供すると思いました。このアプローチは@Cwanの提案に基づいており、ブランチが作成された「親」チェンジリストを出力します。引数はFIRST_BRANCH_CL、ブランチ作成チェンジリスト(つまり、新しいブランチに送信された最初のチェンジリスト)に置き換える必要があります。具体的な例として、元の質問から置き換えるFIRST_BRANCH_CL130、このワンライナーはを出力します123

p4 describe -s FIRST_BRANCH_CL | perl -lne 'if(/^\.\.\. (.+#[0-9]+) .+$/) {print quotemeta $1}' | xargs p4 filelog -m1 | perl -lne 'if(/^\.\.\. \.\.\. branch from (.+#[0-9]+)/) {print quotemeta $1}' | xargs p4 fstat | perl -lne 'if(/^\.\.\. headChange (\d+)/) {$MaxCL=$1 if($1 > $MaxCL)} END {print $MaxCL}'
于 2014-07-16T12:17:26.800 に答える
0

短い答え

P4Vでリビジョングラフを使用することは、時間を遡って統合履歴を調査します。PerforceWebサイトのビデオ

何千ものファイルがあるブランチのリビジョングラフを使用して、特定の変更がブランチに統合された時期を追跡することに成功しました。そのため、ほとんどの人が使い方がわからないために過小評価しているため、私はそれを推奨し、トレーニングビデオにリンクしました。

長い答え

...[削除]

更新:リビジョングラフは明らかに実行不可能であるため、プロセス/ポリシーを使用してこれを解決できる可能性があります。つまり、統合を実行するときに、「Branched@CL123」の説明にメモを追加します。トランクからリリースラインに統合するときに、このアプローチを自分たちで使用しました。

于 2010-11-04T10:00:47.350 に答える
0

更新された回答: これはうまくいくと思います。これを試して:

p4 interchanges from_branch  to_branch

これにより、メインブランチからリリースブランチへの統合されていない変更が表示されます。一番上のチェンジリスト番号から1を引いたものを使用して、ソースチェンジリストを見つけることができると思います。 interchanges文書化されていないPERFORCECLI機能です。詳細を確認するには、と入力p4 help interchangesしてこのコマンドの詳細を確認してください。

繰り返しますが、これはうまくいくと思います。そうでない特別な場合もあるかもしれませんが、それは困難で重要な問題に対する私の最善の推測です。

于 2010-11-04T14:32:03.237 に答える
0

p4vの[履歴]タブを使用すると、ブランチに対して送信されたすべてのチェンジリストが表示されるので、これを見てください。

//project/1.0/...

提出された最も古いチェンジリストを見つけたら、そのチェンジリスト内のファイルのいずれかでそのリビジョングラフを表示すると、ファイル(および残りのファイル)が統合されたブランチが表示されます。

同じことをするためにp4コマンドで戻ってくることができるかどうかを確認します。

于 2010-11-07T09:08:39.737 に答える
0

「p4統合」は私のために働いた。説明で「コピー元」を探します

于 2017-01-21T20:21:35.720 に答える