仕事では大人の事情で Subversion を使わざるをえないんだけど、 Subversion でも Github Flow みたいに、ブランチ切って作業するように努めてはいる。
今回、他の作業が入って、ブランチをだ〜いぶ放置していたら、その間に trunk に結構修正が入ってしまった。 trunk の修正内容をブランチにマージすると、最終的にブランチを trunk にマージするとき衝突しまくった過去があるので、リベースしたい。
Git なら rebase で一発だけど、Subversion には rebase コマンドはない。 仕方ないので、他の方法をとることにした。
具体的には、リベースしたい feature ブランチがあるとき下記の手順をおこなった。
- trunk から最新リビジョンを起点に新しいブランチ rabase_feature を作成
- feature ブランチを rebase_feature ブランチにマージする
- feature ブランチを削除
- rebase_feature ブランチを feature にリネーム
これでリベースっぽくなった。 ただ、旧 feature ブランチの履歴を引き継げないから完璧ではない…。 もっと上手いやり方はあるのかも。
Subversion から Git に移行するのが個人的には一番いい。 Visual Studio に Git バンドルされないかな。 そうなれば大人の事情もクリアできそうなんだけど。