[View] [Edit] [Attachments] [History] [Home] [Changes] [Search] [Help]
DVS
http://beta4.com/squeak/aubergines/docs/dvs.html
Squeak を使っていると、他の環境との違いに戸惑う事が少なくありません。大きな例としてソース管理があります。通常プログラムはテキストファイルの形でディスク上に保存され、僕らはそれをディレクトリごとに整理し、交換し、CVS を使ってバージョン管理する事さえ出来ますが Squeak に関しては独自の哲学が災いしてか、ソースをうまく管理すると言うことが出来ないのです。
フィルインでメソッドのある部分をファイルに記録する事は出来ますが、メソッドの削除を記録する方法が無い為、複数のマシン上で開発を行っていると消したはずのメソッドが消えずに残ってしまいます。また、改行コードの問題もあって CVS 等の外部ツールを使いにくくなっています。
DVS はこれらを解決するツールです。プロジェクトのある時点のスナップショットを正確に記録できるほか、CVS と併用する事によってバージョン管理も可能になります。
インストール
SqueakMap のインストール時に自動でインストールされるようになりました。
後で出したい時は PackagePanel open です。
パッケージの作成
パッケージとは、あるルールに従って名前を付けた一連のクラス/メソッド群です。
例えばパッケージ名を "Foo" とします。
- クラス定義は "Foo" カテゴリまたは "Foo-なんとか" カテゴリに属します。
- 他のクラスに混ぜ込んだメソッドは "*foo" または "*foo-" メソッドカテゴリに属します。
- "Foo" または "Foo-なんとか" カテゴリのクラスの中で、"" から始まるメソッドカテゴリは除外します。
こうして名づけた Foo パッケージを、PackagePanel の Add ボタンで登録し、FileOut でファイルに書き出します。何とこのファイルの改行コードは CRLF になっています!これは一体どういう風の吹き回しだ?! ソース見てもよく分かりませんでしたが、これで心おきなく cvs diff が使える!
CVS と組み合わせる
PackagePanel が FileOut するファイルは一つなので、それを CVS に登録するだけです。どれだけクラスが増えてもファイル一つと言うのは潔いというか何と言うか。ただ、CVS を使うには Cygwin 等が必要なので、この辺もスマートに出来たら完璧なんだけど、ここまで出来るだけでもずいぶんすっきりします。これで会社でも Squeak で遊べる。。。
注意
- GGame カテゴリの中のクラスに、*ggame-なんとかのメソッドカテゴリを含めてはいけない。*ggame-なんとかから fileIn するので、そのときにクラス定義が無いと怒られます。
- DVS は Windows で CVS 利用を前提としている為か、fileOut の改行コードがCRLF になっています。このファイルをそのまま他のマシンの DVS で Load しても余分な ^M がついてしまいます。初めてロードするときには、Load だけでなくfileIn も必要です。(バージョン1.58)
Links to this Page