fossilからGitに変換

  • Gitからfossilに変換する
    git fast-export --all > ファイル名
    fossil import --git new-repo.fossil ファイル名
    または
    git fast-export --all | fossil import --git new-repo.fossil
  • fossilからgitに変換する
    mkdir example
    cd example
    git init
    fossil export --git -R new-repo.fossil | git fast-import

リポジトリを圧縮する
  • fossil
    sqlite3 リポジトリファイル vacuum
  • git
    git fsck --full
    git reflog expire --expire=now --all
    git gc --prune=now

    # 完全圧縮(遅い)
    # git gc --prune=now --aggressive
とあるオープンソースのプロジェクトを素材に試しました。
圧縮前

圧縮後
--aggressive

備考
git 80MB

7MB

fossil 約20MB 約20MB 無圧縮データ
/stat
530MBと表示される

取り込み直後は、fossilのほうが小さいのですが、gitは、--aggressiveするとfossilの半分になりました

gitとfossilでは、ブランチの性質が違うのでそのまま、fossilに取り込めない場合があります。
  • 同一コミットに複数のブランチがある場合
  • タグしかない場合

ブランチの性質
fossil git
開始情報 ある ない
ブランチ付け コミットが発生 コミットは発生しない
完全抹消 不可能(仕様) 可能


gitから取り込む際の注意
  • コミット作者名の置換ルールがありません。
    取り込む前に整理したほうがいいです
  • 同一コミットにブランチが2個以上ある場合対応していません
  • 取り込んだ後にgitに書き出しても元のgitリポジトリと同じ構成にはなりません。
  • 差分圧縮に対応していないので、大きいファイルかつ細かい修正が多い場合は向いていません。
  • 履歴の削除に対応していないので、不要なブランチを切り捨てたい場合は向いていません。

» Gitからfossilに変換 2017'">続きを読む