IDEA7のShelve Changesが鼻血吹くほど便利な件について
昨日,IDEA7でバージョニングまわりが強化されたと言ってたヤツの一例。いつのころからかChangesウィンドウに"Shelve Changes..."ってメニューが追加されてたんだけど,よく調べもしなかったので放ぽっていたのだが,最近やっと意味が分かった(近頃,こんなんばっかだな)。
簡単に言うと「ローカルのチェンジセットをRevertする前に,パッチ作って寄せておいて,必要に応じて差し戻せる機能」だ。って,Subversionとか使ったことある人にしか通じない説明だな。もっと簡単に言うと「ローカルで変更した内容を,どっかに待避しておいて,好きなときに差し戻す機能」だ。当然,「どっか」ってのはリポジトリじゃないよ。
どんな風に使うかと言えば,こんな感じにローカルチェンジセットから「Shelve Changes...」を選ぶ。
軽く自慢しとくと,ローカルチェンジセットは任意のまとまりで管理することが出来る。つまり,同時並行で複数の作業をしていた場合,その作業ごとにチェンジセットを分けておけるってこと(といっても,同じファイルを修正してると意味無いけどね)。
話を戻す。「Shelve Changes...」を選ぶと,こんなダイアログが出るんで,テキトウにコメント(これがShelve Changesetの名前になる)を入れて,「Shelve Changes」ボタンを押す。
そうすっと,ワーキングコピーからそのチェンジセットの内容が破棄(Revert)され,元に戻る。破棄されたチェンジセットは,Changesウィンドウの「Shelf」タブに待避される。まさに「棚に上げた」って事だ。
待避されたチェンジセットはメニューの「Unshelve Changes」で,再度ワーキングコピーに展開することが出来るんで,リポジトリにコミットしなくても,ローカルだけである程度のバージョニングを行える。
言ってしまえば,ローカルパッチの作成と適用なんで,やる気になればSubversionだけで出来ると思うが,IDEに統合されてるってのに意味があるのじゃ。IDEA7のロードマップに「バージョニングの強化」があったとき「んなん,どーでもいいわ」と思ったが,スイマセン,私が間違ってました。
さほど用途の多い機能とは思わないけど,こうゆうのがあるってのを知っていると,イザというとき便利。
#例えば複数の実装案があって,どっちにしようか試してみるとかできるしね。
「プログラマの環境のほうが桁違いにスゲェ」
とは,最近いっしょにペアプロしてる人のお言葉.しばらく実装から離れてて久しぶりに開発したら,その環境の充実さに愕然としたそうな.
そりゃ,そうだよなぁ.まずはチームの環境として,Subversion+Tracでバージョニングや課題管理はバッチリやってくれるし,Hudson+JUnit+Seleniumのコンボで毎日インテグレーションビルドもする.さらに個人の環境になるとIDEが当たり前のようにコード補完やリアルタイム・インスペクションを行ってくれるし,コードブラウズだって縦横無尽,多角的に行ったり来たりする.IDEのローカルヒストリに加え,SCMと連携すりゃ変更管理だって,(ほぼ勝手に)やってくれる.
#Subversionのannotateを見て,たいそう驚いていた.
それに引き換え,設計者は相変わらず「方眼Excel」で設計書を書いてるんだからねぇ.やるせない気持ちになるのも分からんでも無い.Excelだから全部ダメって断罪する気はないけど,バイナリファイルは不便だよなとは思う.とは言え,Wikiとかそれ系の形式記述が優れてるとも言い切れないので,難しいよなってお茶を濁すしか無いんだけど.
実装に近い側が恐ろしい勢いで能率化してるのを知らず,旧態依然としてる人たちは,いったいどんだけ損をしてるんだろ?と改めて考えされられる出来事でした.
OutOfMemoryエラー発生!? GCがあるのに、なぜ? (1/2):現場から学ぶWebアプリ開発のトラブルハック(5) - @IT
ブクマ数の割に,書いてる事は当たり前過ぎて肩すかしだった.