コミットのバックポート

trunk からバージョンブランチにコミットを戻す場合、追加のレビューとして trunk にコミットを行ったコミッターとは別のコミッターが行うことがベストです。RC フェーズでは、どのようなコミットに対しても少なくとも2人のコミッターが承認しなければなりません。

同じコミットで複数のブランチにコミットしないでください。少なくとも Git ミラーが壊れてしまうでしょう。

コミットをバックポートする基本的な SVN のフローは次のようになります:

  1. $ svn switch '^/branches/5.9'
  2. $ svn merge -c 12345 '^/trunk' where 12345 is the changeset ID.
  3. $ svn ci

trunk での修正が複数の別々のコミットを必要とする場合、以下のように1つのコマンドですべてをバックポートできます:

svn merge -c 10001,10002 '^/trunk'

マージの際には、一般的に、マージ対象以外のコード変更がない元の branches/5.9 チェックアウトと、マージされたコミットをテストするためのテストサイトを使うべきです (これは常に行うべきです)。

また、おそらく必要になることはないと思いますが、複数のコミットを次々とマージする場合は、その間に svn up を実行することを忘れないでください。マージするコミットが複数ある場合は、ブランチのコミットでそれらをまとめておくと、誰でも読みやすくなります。

ブランチにバックポートする前に trunk で同じコードに対して複数の変更が行われることがあります。この場合コンフリクトが発生するため、古いチェンジセットもバックポートするようにしてください。バックポートを依頼するコミッターは、チケットにこの状況を書いてください。

マージ情報を後から追加するには、svn merge --record-only -c 12345 '^/trunk' を実行してください。

ブランチコミットメッセージの大部分は trunk コミットからコピーされ、いくつかの更新が加えられます。コミットメッセージのドキュメント、特にマージとレビューする人のセクションを参照してください。

上記のコマンドは、サブディレクトリからではなく、必ずブランチのルートから実行してください。なぜなら、svn:mergeinfo/branches/5.9 の SVN プロパティで、SVN クライアントが設定するものであり、サーバーサイドのものではないからです。

https://core.trac.wordpress.org/browser/branches/5.9 の一番下に、「’merged」と「eligible」という2つのリンクがあります。2番目のリンクは、すでにマージされたコミットでは表示されないはずです。

セキュリティバックポート

セキュリティの修正は多くのバージョンにバックポートされ、リリース当日までコミットされません。このため、プロセスを少し合理化できます。

trunk と現在のブランチには個別にコミットすべきですが、古いブランチではそのブランチのすべての修正を1つのコミットにまとめることができます。しかし、一度に複数のブランチにコミットしてはいけません。

一括パッチを各ブランチにコミットする際には、マージメタデータを記録する必要があります:

svn merge --record-only -c 12345,12347,12349 '^/trunk'

原文 / 日本語訳

最終更新日: