2016-08-04 3 views
2

私は統合したい変更を含む別のブランチ上のファイルを持っています。しかし、私はまだ統合したくない他の変更も含んでいます。PERFORCEでファイルを部分的に統合するにはどうしたらいいですか?

ファイルを部分的に統合するにはどうすればよいですか?

私は最初にファイルを統合して解決しました。その後、ファイルに "p4 edit"を実行して、まだ取り込みたくない変更を削除しました。 "p4 opened"はファイルが編集用に開かれていると言っているので、コミットは統合ではなく編集として提出されると思いました。私は間違っていた!それはまだ統合の歴史を更新しました!したがって、後でPERFORCEは「すべてのリビジョンが統合された」と言いますが、この問題を解決する唯一の方法は、統合履歴を無視して統合することです。これは解決するのが苦痛です。

どうすればこの問題を回避できますか?

EDIT:

私はそこにファイルの単一のリビジョンで複数の変更があると、私はそれの一部だけを統合する意味明確にします。

答えて

1

(質問はおよそ部分的にファイルの単一のリビジョンを統合し、リビジョンがない統合されたことを反映するように編集)

リビジョンがPERFORCEのメタデータの変化の最小原子であるので、あなたはできなくなりますリビジョンのサブセットが統合されたことを記録します。リビジョン全体が統合されていることを記録したくないため(これにより、将来の統合のために残りのリビジョンは無視されます)私は編集としてそれをしたいと思う:

p4 edit target 
p4 print -o theirs source#n 
p4 print -o base source#n-1 
p4 merge3 base theirs target > target 
rm base theirs 
(edit target) 
p4 submit 

別のオプションは、最初にファイルを開いて食べた後、元に戻す(ローカルの変更を維持するために-kフラグを使用)し、編集のために再開によって解決レコードをクリア:あなたがそのようなあなたのことをファイルに作っている複数の独立した変更がある場合、一般的に

p4 integrate source#n,n target 
p4 resolve 
p4 revert -k target 
p4 edit target 

後で独立してチェリーを選んで追跡することができれば、それを独立したチェンジリストとして提出すれば、はるかに簡単になるでしょう。巨大な変更を行った後で初めて実現する場合、大きな変化を棚上げし、一部の部分を元に戻し、小さな変更を提出してから、大きな変更を取り消して継続します。

+0

ファイルの1回の変更には複数のチャンクが含まれているため、この1回の変更のわずかなブロック(1つの機能の変更)のみを統合したいと考えています。 – Calmarius

+0

それはやっかいです - 私は改訂された質問に対して新しい答えをします。 –

関連する問題