SVNの間違った使い方
【間違った使い方】
- マージを定期的に行わない
- branchをSVNで切らない(Subversion book に従ってない)
- 目的別にbranchを切らない
SVNはConcurrentなバージョン管理システム。
これを理解せずに運用すると酷い目に合うのだ。
そして、オイラも今、まさに、その酷い目に合っている一人;;
どんな状況かというと...
branch: 2ヵ月前から性能対策のためにbranchされた r539でr1101 trunk: 1ヵ月前から障害対応が始まった r532-r1895 一度もマージしていない... しかも、branchをtrunkのexport&importで切ってる... # つまり、移動やリネームをSVNが追っかけられない。 branchの変更ファイル数は約600 trunkの変更ファイル数は約700 双方の最終リビジョンのdiffは20万行orz それをまとめてマージしようっていう状況 。 間違った使い方3拍子そろったカンジNooooo!
やったことあるヒトは分かると思うけど、このテの作業は心が折れそうになります。
一般的に一時的なbranch少なくとも1週間に1度はマージするもの。
# バージョンfixのためのbranchでバックポートするだけとかは別だけど。
「trunkで障害対応始まる前にbranchマージすべき」って言ったのに...
そして、まさか、マージする係りが自分になるとは!!!
branchの最初と最後のdiffを見ながら、 WinMergeでtrunkにbranchの変更を移す。 数行ごとにVSでエラーがないか確認。
死ぬるwww
一番アレなのは、branchで性能対策以外にリファクタリングやってる事。
物理構成変えたり、ネームスペース全置換してたり、キャストのやりかた変えたり、メソッドリネームしてたり、ログ埋め込んでたり...
本来、性能対策は計測ありきなのに。
まさに、パレートの法則の逆を行ってる。
「2割の目的のために8割の変更を行っている」カンジ。
# 「間違った性能対策」w
なんで、今までマージしなかったのか?
Concurrentな意識のないマネージャが、
「性能対策の効果が認められるまでマージすべきじゃない」
と言ったからだそうだ。
間違ってはいないが、いろいろ徹底しきれていなかったですな。
性能対策以外のことをやっているのが問題。
リファクタリングするならtrunkか別のbranchでやるべきだったということだ。