fossil-scm

個人的な開発で今までずっとSubversionを使っていたのですが、いろいろと不満が。

  • ローカルマシン+ローカルレポジトリでの作業だとレポジトリのバックアップが面倒くさい+ノートとデスクトップPC間での同期が面倒
  • ローカルマシン+リモートレポジトリでの作業だとオフラインでCommitできない

集中型で複数のレポジトリだと面倒ですよね。svnsyncとかって手もあるとは思うのですが。かといってオフラインでコミットできないのもちょっと使いにくい。

あくまで個人的な開発なのでそんなに機能はいらないのですが、分散バージョン管理システムが使いたいなーと思いはじめてちょっと前にgitを勉強していたのですがWindows環境で使うのが面倒なので、昔挑戦して結局やめてしまったfossilを再度使う事にきめてみました。

使い始めてしばらくたちましたのでいろいろレポート。ただ、まだそれほど経ってない事もあって間違いあったらご指摘いただけると嬉しいです。

Pros

  • VCS+Ticketシステム+Wikiによるドキュメント管理
  • fossil.exe一個で運用可能
  • 軽い
  • Windows/Linux/MacOSでごく普通に利用可能

Cons

  • 日本語利用(後述しますが結構考慮必要)
  • ファイル移動の追跡
  • 検索がしにくい

Pros

基本的にfossilはVCSだと思ってます(^^;。ただそこに簡単なWikiとTicketシステムが含まれています。TODO的にTicket登録したい場合とか、Wikiにドキュメントを残しておいたりなどしたくなったときにはfossil uiとおもむろにたたくとWeb UIが自動的に立ち上がって、ここからWikiの編集やTicket登録が可能です。ただし、ここをtracやRedMineなんかのノリで考えるとPlug-inがありませんので機能不足と思われます(個人的には余計なセットアップの手間もいらず、機能が少ないのもシンプルで良い点だと思ってますが、、、)。

次にfossil.exe一個で運用可能な点。インストールも不要でパスが通ってる場所におくだけでよいです。Unix系コマンドへの依存が高い、gitをWindowsに入れる気にならない自分には結構良い点に思ってます。ただし、signingをしたい場合、初期設定ではgpgを呼び出す形になっていますので、その場合にはgpgも必要になります。

軽い。今のところ重いなーと思った事はないですね。

WindowsやLinuxでもファイル一個で運用できてしかもそれぞれで使い勝手に差がありません(と思ってる^^;)。コマンドラインの感覚は当然ながら、GUIもWeb UIにしてある事で環境毎に違うといった事がありません。MacOSもたぶん同じじゃないかな。使った事ないけど。

Cons

一点目。日本語利用!

まずUI。個人的に英語でhelpが出たりする事には抵抗はあまりないのですが全部英語なのは嫌う人も多いかなと。

次がLogなどの日本語。fossil上で日本語を使う場合にはUTF8nで統一するほうが良いです。fossil commit時のlogなどをcmd.exe上から入力してしまうとあとでfossil timelineやWeb UI上で確認したときに文字化けして悲しい事になります。

環境変数EDITORで起動するエディタを指定できますが、デフォルトでエンコードをUTF8nに指定したほうが良いでしょう。ちなみにUTF8nを指定してBOM無にしておかないとdiffとったときなどにBOMがコンソールに出てきてうざいです。

あとこれは日本語利用とは違いますがWindows環境で利用される場合、改行コードもlfで統一したほうが良いです。commitするとわかりますがテキストファイルがCR/LFで改行されているとconfirmationが表示される事になります(設定のcrnl-globで緩和できます)。ソースコードの類はわりとWindows上でもlf改行コードでいける事が多いので、できればそれで統一したほうが良いかと思います。

二点目。ファイル移動の追跡。これは自分のやり方が悪いのかもしれませんが、fossilではsvnのようにコマンドを指定する事でファイルの移動をvcs側に知らせる事が可能です。fossil mv、またはrenameです。これをすればきっと移動された後でもファイルの変更が追跡可能なんだろうと思ったのですが、fossil finfoで確認する限りでは移動前と後で関係が途切れているように見えます。一応renameの事実は確認できるのですが、finfoで大元までたどれると非常に良かったかなぁと。

最後。書き忘れてたので追加しました。fossilって検索すると基本的にfossil-scmには辿り着けないと思います(^^;。Web上での記事を探す場合はfossil-scmで検索かけるようにしてました。

現在の使い方

今のところこんな感じで使ってます。

  • WikiやTicketに機能やCustomizeは求めない。あるものを使う。
  • 日本語はUTF8nで全部統一、改行コードもできるだけLFで統一。Crossplatform開発なんでWindows系のMSVC関連ファイルの一部で例外的にCRLF利用。
  • オフラインでの利用が前提になるノートPCではautosyncをoff、Desktopではautosync on
  • .fossil-settings/ignore-globにバックアップファイルの*~を登録
  • EDITOR環境変数にCommig LOGを編集するためにUTF8n/LFがデフォルトのEDITORを指定する。
  • 普段の操作は
    1. ソース編集
    2. fossil addremove
    3. fossil commit、
    4. たまにfossil uiしてWikiを編集したり、Ticketを登録しておいたり。
    5. 1に戻る
  • 家に帰ったら
  1. fossil sync

こんな感じです。現状特に大きな不満もなく使っています(日本語関係は嫌がる人多そうですねー(^^;)。

日本では結構tracやRedMineなんかと同列に比較されがちで、やれカスタマイズができないとか言われてますが、svn代わりの分散型VCSとしてとらえればそれなりに良いと思います。個人的な開発なんかには結構おすすめできるんじゃないかなー?