⇧ そもそも、お金を取ってるサービスなのに不親切極まりないドキュメントの在り様が問題だとは思うんですけどね...サービスの利用者に読解の労力を負担させるの止めて欲しいよね...
Subversionでもcherry pickingができるみたい
Gitとか使ってると、cherry pickingという言葉を聞きますが、
コマンドの対応関係はだいたい以下のようです。
ブランチの切り替え | svn switch | git checkout | hg update | ||||
つまみ食い | svn merge | git cherry-pick | hg transplant |
いじょ。
Subversion, Git, Mercurialそれぞれでのcherrypicking - wyukawa's diary
trunk で行った修正を特定のリビジョンの修正だけリリースブランチに反映したい場合など リビジョンを指定して行うマージを、Cherry Picking と呼びます。
⇧ Subversionでも同様のことができるらしいですと。
Subversionでは、マージの特殊ケースをcherry pickingと言うそうな。
cherry pickingのパターンとしては、
マージ元 | マージ先 |
---|---|
branch | another branch |
branch | trunk |
trunk | brunch |
の3パターンになるのかな?
「マージ元」の内容を「マージ先」に反映する感じですかね。
Eclipse内蔵のSubversionでcherry pickingする場合は、
⇧ 上記サイト様が参考になるかと。
Eclipseの公式のドキュメントもありました。
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」については、
⇧ コミットの取消をリモートのリポジトリに反映できるということらしい。
「Reversed merge」を考慮すると、
マージ元 | マージ先 | merge | reverse merge |
---|---|---|---|
branch | another branch | 可 | 可 |
branch | trunk | 可 | 可 |
trunk | brunch | 可 | 可 |
brunch | brunch | 不可 | 可 |
trunk | trunk | 不可 | 可 |
⇧ のようなパターンが有り得るってことなんだろうか?
実際に試せてないから分かりませんが、推測の域を出ないですが...
「Reintegrate merge」の使いどころがよく分からないのだが、
トランクをブランチにマージするときは、--reintegrate
オプションを付けてはいけない。
ブランチをトランクにマージするときは、--reintegrate
オプションを付ける。
--reintegrate
オプションを使うこの形式のマージは一つのブランチにつき一回だけ行える (その後ブランチを更新してもそれをトランクにマージできないので、ブランチはただちに削除するとよい)。
⇧ 上記サイト様によりますと、マージ後に「マージ元」は使わないとして良い場合に使う感じになるようです。
ウッカリしてて、trunkからbranchに対して「Reintegrate merge」してしまった場合、どうすれば良いのだろうか?
「Reintegrate merge」の取り消しとかできないとしたら、恐ろしくて使えないんだが...精神衛生上誠に宜しくないですな...
そして、「Reintegrate merge」の取り消しができるのかどうかの情報が見つけられない...
あと、
⇧ Gitだとcherry pickingの使いどころが難しいようです。
ただ、Subversionだと、cherry pickingを使えると便利な気もするんだけど...
コミットの粒度を小さくするのも大事だとは思いますが、マージの粒度もできるだけ小さくできるのが良いんですかね?
バージョン管理システムの上手い使い方が知りたい今日この頃です...
毎度モヤモヤ感が半端ない...
今回はこのへんで。