※当サイトの記事には、広告・プロモーションが含まれます。

Subversionでもcherry pickingができるみたい

www.itmedia.co.jp

⇧ そもそも、お金を取ってるサービスなのに不親切極まりないドキュメントの在り様が問題だとは思うんですけどね...サービスの利用者に読解の労力を負担させるの止めて欲しいよね...

Subversionでもcherry pickingができるみたい

Gitとか使ってると、cherry pickingという言葉を聞きますが、

wyukawa.hatenablog.com

コマンドの対応関係はだいたい以下のようです。

  ブランチの切り替え   svn switch   git checkout   hg update
  つまみ食い   svn merge   git cherry-pick   hg transplant

いじょ。

Subversion, Git, Mercurialそれぞれでのcherrypicking - wyukawa's diary

m-tmatma.github.io

trunk で行った修正を特定のリビジョンの修正だけリリースブランチに反映したい場合など リビジョンを指定して行うマージを、Cherry Picking と呼びます。

特定のリビジョンだけマージ(Cherry Picking)

Subversionでも同様のことができるらしいですと。

Subversionでは、マージの特殊ケースをcherry pickingと言うそうな。

cherry pickingのパターンとしては、

マージ元 マージ先
branch another branch
branch trunk
trunk brunch

の3パターンになるのかな?

「マージ元」の内容を「マージ先」に反映する感じですかね。

Eclipse内蔵のSubversionでcherry pickingする場合は、

tokkan.net

⇧ 上記サイト様が参考になるかと。

Eclipseの公式のドキュメントもありました。

www.eclipse.org

Single path/URL merge:
It is typically used in order to merge all the eligible changes into the branch from its immediate ancestor. You can choose to merge all the eligible changes at once, which is called a 'sync' merge in terminology or merge explicitly defined set of changes using revision selection controls, which is called a 'cherrypick' merge.

https://www.eclipse.org/subversive/documentation/teamSupport/merge_dialog.php

⇧ コミットしたリビジョンを選択してマージすることで、cherry pickingを実現できるっぽい。

URLについては、「マージ元」を選択する感じですかね。

URL選択後、「Revisions:」のラジオボタンを選択して、「Browse...」を押下すれば、

「マージ元」の「リビジョン」を選択できるので、「マージ先」に反映したい「リビジョン」のチェックボックスを選択して「OK」ボタン押下。

マージの完了後に、「マージ先」を選択してコミットすることで、リビジョンが追加され、「マージ元」の選択した「リビジョン」の内容が「マージ先」に反映されます。

Reversed merge」については、

enumorish.hatenablog.com

webyanonanika.blog.fc2.com

dampgblog.hinohikari291.com

⇧ コミットの取消をリモートのリポジトリに反映できるということらしい。
Reversed merge」を考慮すると、

マージ元 マージ先 merge reverse merge
branch another branch
branch trunk
trunk brunch
brunch brunch 不可
trunk trunk 不可

⇧ のようなパターンが有り得るってことなんだろうか?

実際に試せてないから分かりませんが、推測の域を出ないですが...

Reintegrate merge」の使いどころがよく分からないのだが、

magicant.txt-nifty.com

トランクをブランチにマージするときは、--reintegrate オプションを付けてはいけない。

Subversion 1.5 以降での機能ブランチのマージ: まじかんと雑記

ブランチをトランクにマージするときは、--reintegrate オプションを付ける。

Subversion 1.5 以降での機能ブランチのマージ: まじかんと雑記

--reintegrate オプションを使うこの形式のマージは一つのブランチにつき一回だけ行える (その後ブランチを更新してもそれをトランクにマージできないので、ブランチはただちに削除するとよい)。

Subversion 1.5 以降での機能ブランチのマージ: まじかんと雑記

⇧ 上記サイト様によりますと、マージ後に「マージ元」は使わないとして良い場合に使う感じになるようです。

ウッカリしてて、trunkからbranchに対して「Reintegrate merge」してしまった場合、どうすれば良いのだろうか?

Reintegrate merge」の取り消しとかできないとしたら、恐ろしくて使えないんだが...精神衛生上誠に宜しくないですな...

そして、「Reintegrate merge」の取り消しができるのかどうかの情報が見つけられない...

あと、

devblogs.microsoft.com

zenn.dev

www.oliverdavies.uk

⇧ Gitだとcherry pickingの使いどころが難しいようです。

ただ、Subversionだと、cherry pickingを使えると便利な気もするんだけど...

コミットの粒度を小さくするのも大事だとは思いますが、マージの粒度もできるだけ小さくできるのが良いんですかね?

バージョン管理システムの上手い使い方が知りたい今日この頃です...

毎度モヤモヤ感が半端ない...

今回はこのへんで。