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
リポジトリを圧縮する
とあるオープンソースのプロジェクトを素材に試しました。
|
圧縮前 |
圧縮後
--aggressive
|
備考 |
git |
80MB |
7MB
|
|
fossil |
約20MB |
約20MB |
無圧縮データ
/stat
530MBと表示される |
取り込み直後は、fossilのほうが小さいのですが、gitは、--aggressiveするとfossilの半分になりました
gitとfossilでは、ブランチの性質が違うのでそのまま、fossilに取り込めない場合があります。
- 同一コミットに複数のブランチがある場合
- タグしかない場合
ブランチの性質
|
fossil |
git |
開始情報 |
ある |
ない |
ブランチ付け |
コミットが発生 |
コミットは発生しない |
完全抹消 |
不可能(仕様) |
可能 |
gitから取り込む際の注意
- コミット作者名の置換ルールがありません。
取り込む前に整理したほうがいいです
- 同一コミットにブランチが2個以上ある場合対応していません
- 取り込んだ後にgitに書き出しても元のgitリポジトリと同じ構成にはなりません。
- 差分圧縮に対応していないので、大きいファイルかつ細かい修正が多い場合は向いていません。
- 履歴の削除に対応していないので、不要なブランチを切り捨てたい場合は向いていません。
» 続きを読む
fossil git import すると欠落がある
執筆:2017.06.02
編集:2022.09.17
[2017.6] 1年近くたっても修正されていないようなのでメモ
[2022.9] version 2.19でも修正されていない
fossil bug : gitからのインポートで最初と最後のコミットに付随するタグが欠落する。
再現コード
# 作業フォルダを作成し移動
mkdir tag-bug
cd tag-bug
# gitの初期設定をする
git init
git config --local user.email test@test
git config --local user.name test
# gitにテストコミットをする(1-3)
git commit -m "1" --allow-empty
git tag tag1
git commit -m "2" --allow-empty
git tag tag2
git commit -m "3" --allow-empty
git tag tag3
# tag is : tag1, tag2, tag3
# gitの内容をダンプして、fossilにインポートする
git fast-export --all > ./dump.txt
fossil import --git test.fossil ./dump.txt
# fossilのタグのリストを確認する
fossil tag list -R ./test.fossil
# Actual Result
tag2, trunk
Missing of tag1, and tag3
# Expected Result
tag1, tag2, tag3, trunk
# 最新版は、masterが追加される
» 続きを読む