2017-11-06 5 views
1

背景

間(ユーザーを除く)すべてのチェンジを取得します。私は「メインライン」デポとPERFORCEの中に「ベータ」の枝を持っている「メインライン」とブランチ

"mainline"の最新コードを私の "beta"ブランチにマージしたいと思います。私は毎日約1回これをしなければなりません。毎日 "mainline branch"に約100以上のコミット/投稿があります。

通常、私はそうのようなものだろう。しかし、我々はなど、スクリプトを構築し、様々なメイクファイルにバージョン番号を更新し、迷惑な時間ごとのビルドプロセスを持っている

p4 integ //prod/mainline/... //prod/beta/... 
cd $(p4 where //prod/beta/... | cut -d ' ' -f3 | sed 's/\.\.\.$//g') 
p4 resolve ./... 

問題

を。バージョン/ブランチ番号を更新し、ビルドサーバによって「ダミー」アカウント(すなわちdummy_user)を使用してPERFORCEにチェックインされます。 これは、すべてのブランチで実行されます。は、マージ操作に任意の​​競合が発生します。

このバージョン番号の提出により、p4 integ/p4 resolveの操作が正常に完了しなくなり、「バージョン番号の更新操作」の影響を受けるこれらのファイルをすべて手作業でマージする必要があります。 私はこのバージョンナンセンスではなく、実際のコード変更を手でマージする必要があります。


質問

ユーザー除くp4 integ枝に存在する(ただし、メイン/他の分岐に存在する)はまだありません変更リストの集合への道は、ありますか?しかし、私はすべての変更、リストのリストを取得するために自動化された方法はありません

for i in $(p4 changes //prod/mainline/... | grep -v dummy_user | cut -d ' ' -f2) 
do 
    p4 integ //prod/mainline/[email protected]${i},${i} //prod/beta/... 
done 

:私はいつものような何かを行うことができ...

  • mainline内に存在し
  • しかし、まだ融合/統合されていないbeta ...
  • そしてdummy_userによって作成されていません。

どのようにすればいいですか?

答えて

2

は聞こえるが、FWIWは、ここで私がしたいものです。

0)それは、この次の部分が容易になりますので、branchspecを行います

p4 --field "View=//prod/mainline/... //prod/beta/..." branch -o prod-main-beta | p4 branch -i 

1)ROBO-コミット(私はあなただけの一人でこれらの事を残したいと仮定)無視:

p4 -Ztag -F @=%change% ichanges -u dummy_user -b prod-main-beta | p4 -x - integ -b prod-main-beta 
p4 resolve -ay 
p4 submit -d "Begone, robo-cruft!" 

2)は、 "本当の" インテグラを実行します。テ。 「ダミー」の変更を取り除く必要がある場合は、-Rsオプションを試してください。これにより、マージが増える可能性がありますが、それらのマージに既に統合されたものは含まれていないことを確認するために、 。

p4 integ -b prod-main-beta [-Rs] 
p4 resolve [-am] 
p4 submit 

3)バージョン情報が専用ファイルにあり、他のビルドファイルがそのファイルにリンクするようにビルドツールを改善します。その後、あなたのバージョンファイルをブランチスペックから除外するか、またはチェリーピックすることなく何かを変更することなく常に変更を無視することができます。実際の例を次に示します:https://swarm.workshop.perforce.com/files/guest/perforce_software/p4/2015-1/Version

+0

あなたのオプションが「より標準的」(より多くのP4、より少ない外部スクリプト)であるため、受け入れています。あなたは、その分岐スペックを道路の下で再利用したい場合、どのようなステップを実行するのか注意してください。ありがとう! – DevNull

+2

余計な手順はありませんが、それはbranchspecの美しさです。一度作成して何度も使用します。 :) –

1

他のPERFORCEの質問を参照している間に、綿毛が正しい質問を見つけました。要するに、私のような何かをしたい:今

for i in $(p4 interchanges //prod/mainline/... //prod/beta/... \ 
      | grep -v "dummy_user"        \ 
      | cut -d ' ' -f2) 
    do p4 integ //prod/mainline/[email protected]${i},${i} //prod/beta/... 
done 

を、私は最終的にロボ-コミット手マージ半時間を無駄にすることなく、次の操作を行うことができますよ。あなたはあなたのために働く解決策を見つけたよう

p4 resolve -am //prod/beta/... 
関連する問題