日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

git と fossil の比較 git vs fossil-scm

2015-12-02
git と fossil の比較 git vs fossil-scm

結論をいいますと
* 現段階で,gitからfossilへの移行はしないほうがいいです。

fossilには、ブランチ、タグの削除・抹消機能はありません。

改行コードが絡む場合は、 git を使うほうがいいでしょう。
fossilには、cr-lf 変換機能は ありません。

商用のプログラミング言語には、 LF改行だと
// コメント行
を正常に処理できないものがあり、意図しない動作となります


 2015/12 fossil git svn
料金 無料 無料 無料
リポジトリ ファイル1個 フォルダ .git
ファイル多数
フォルダ
ファイル多数
改行
コード変換
なし あり あり
ブランチの削除 不可※ 可能 可能
空フォルダ 不可    
日本語メニュー なし あり あり
わかりやすさ × ×
操作性 × ◎ 
処理速度
競合ファイルの処理
GUI
×
可搬性
ポータビリティ
×
ライセンス

個人著作物

(2-clause BSD license)

GPL Apache License 
将来性(開発の継続)

△ (?)

◎ (?)
20年後(Windows)の動作 Windowsは下位互換性が非常に優れているため、.netランタイムライブラリを使っていない場合は、将来的に動作で問題を起こすことはまず発生しない。

20年後(Unix系)の動作

〇 (未知 ?)
static build-inの単一ファイルなので問題を起こす要素がない

未知 ? 未知 ?


fossilのソースコードをgitに変換
サイズ 備考
fossil 元のサイズ 約  60MB vacuum済み
git変換後 約500MB prune済み
データサイズは 3.5GB
圧縮率は、fossilのほうがいい。何個も用意する必要がある場合は、gitはディスクを無駄にする。
fossilは exportに難があるためgitに取り込んだ時点で tagが消失する。

fossilにできて gitにはないもの
・fossilバイナリ1個で持ち運び管理できる
・単一ファイルで保存
  使い込んでも、リポジトリは一つで
  gitのようにファイル数がどんどん増大することはない
・セルフホスティング機能
・wiki
・ticket
・USBにいれて持ち運べる

gitにできて fossilにはないもの
・cr-lf コンバート機能
・履歴の改ざん
・不要なブランチの切り捨て、完全除去。
・使用中のリポジトリに関係のないリポジトリの取り込み
・サードパティの操作性のよいGUI
・エクスプローラーでのファイル操作
・日本語メニュー
・fossilは、個人の著作物で、本体への変更は著作の委譲署名と氏名住所の提出をもとめてくる。ソースは、オープンだがGPLのようなライセンスではないので注意。
委譲しないならバグレポートに修正コードいれると別のコードにしないといけないから,バグレポートにコードは書くなとか口うるさいので注意。
フォークという形なら2-clause BSD license.が適用されるので問題ないだろう。
・リビジョングラフがないので、わかりにくいです。timelineは、git logに相当します

fossilには、向かないプロジェクト
・CRLFで保存するソースコード
 追加のたびに警告が表示される。 diffが変。
・フォルダ属性が必要な場合で、パーミッションの厳格な管理が必要な場合
空フォルダに対応していないため、パーミッションがコミットした人のものになるらしい。

LF改行で保存してはいけないプロジェクト
  • Delphi系のアプリ。コンパイラがLF改行を正しく認識しないため
    // コメント行 で誤動作につながります。
    gitの場合は、自動コンバート指定します

fossilの問題点
  • 多言語化されていないので流行ることはないでしょう。
  • 著作者に不測の事態がおこるとプロジェクトが停止する
    使う場合は、「開発体制」と「作者の年齢」などを十分考慮したほうがよい。
    ただし、Windowsで使う場合は、バイナリ互換性が非常に高いOSであるため、システムをアップグレードしても長期にわたって使用することができると考えられるため心配は不要。
  • importすると 日本語が長い「数字」になった。
    原因は、src/import.c:dequote_git_filename関数の間違い
    8進数ファイル名をスキップしている
    最新版で修正済み version 2015-12-01以降。
  • fossil importコマンドに欠陥あり。(-2015年版)
    データが抜け落ちることがある
  • fossil exportコマンドに欠陥あり。
    gitに取り込んでもtagが取り込まれないことがある
  • Githubのデータは、コンバートできないらしい。 gh-pagesブランチとチケットなど。
  • web ui で Filesから保存してあるhtmlをクリック
    エスケープしないで、そのままコンテンツ表示する(デフォルト)。
    → 知らない人にコミットさせるとインジェクションを受ける恐れあり。
  • web ui で 個々のファイルサイズが表示されない
  • Windowsで日本語使うには、cygwinのみ
  • コンフリクトのGUIツールがないので、コンフリクト処理が大変なので、チーム管理には向かないと思います。
    SET NAME=ファイル名
    TortoiseMerge /base "%NAME%-baseline" /mine "%NAME%-original" /theirs "%NAME%-merge" /merged "%NAME%
  • 履歴改変できないため、「作業ブランチの抹消」や「不要ブランチの抹消」、誤コミット処理などデフォルトの機能では一括処理できません。
    (個別のコミット消去はある)
  • UTF8以外でコミットすると破壊される恐れあり
    contains invalid UTF-8. Use --no-warnings or the "encoding-glob" setting to disable this warning.
    Commit anyhow (a=all/c=convert/y/N)?
    に 「c」すると 地雷。 勝手に文字コード変換しようとします。
    commit_warning関数で utf8以外でコミット c を選択すると
    blob_cp1252_to_utf8関数が呼ばれ 内容が破壊される。
    日本語に対応していないので使用する際は必ず、.fossil-settings/encoding-globファイルに * を書き込み、変換を無効化すること。

  • Untracked files で除外パターンが機能しない(bug)
    fossil extraのコードを修正すると機能します。

  • Helpコマンドが不親切
    日付指定するときは、
    UTC時間の場合 "YYYY-MM-DD hh:mm:ss.sss"
    日本時間の場合 "YYYY-MM-DD hh:mm:ss.sss+09:00"

    fossil commit -m "コメント" --date-override "2019-01-01 00:00.000+09:00"
     
  • fossil開発ブランチは、SQLiteのアルファ、ベータ版の実験場と化している。
    SELECT datetime(mtime), comment FROM event
    WHERE type='ci'
    AND comment like '%Update%SQLite%'
    AND comment REGEXP 'candidate|beta|alpha|pre.?release|testing'
    ORDER BY 1 DESC
  • マージするとインデントが崩れることがある

個人的な感想 fossil
簡単にセルフホスティングできます。
操作: わかりにくいです。バグが多いです。

素のfossilは、ansi,utf8以外には対応していないので
過去の資産をすべて gitに移行するのが現状一番いい解決策だとは思います。

ソロでsvnやっている場合は、
svnやめてリポジトリを移行する
git-svnを使う
などすると
tortoise svnとお別れできますので
エクスプローラーのフック(tortoise svn)が一つ減り動作が快適になるはずです。

対象物によって
用途に応じたバージョン管理ソフトを選びましょう


GUIツール


Windows

アプリ名 状態
ビルドイン fossil ui コマンド
tortoisefossil 休眠
fuel 休眠


Mac

アプリ名 状態
ビルドイン fossil ui コマンド
SnailFossil


Linux

アプリ名 状態
ビルドイン fossil ui コマンド
Gnome


PR

[PR]