Mimori256 / kdb-parse

KdB を CSV, JSON などの形式でパースしたデータリポジトリ
MIT License
10 stars 2 forks source link

Git LFS へのマイグレーション #14

Open yudukikun5120 opened 10 months ago

yudukikun5120 commented 10 months ago

動機

本レポジトリをクローンするさいに過去変更分を含めた kdb.csv 等のデータファイル群(以下、データファイル群)も同時にクローンされるため、非常に低速である。また、数10MBを超えるファイルについては Git LFS で管理すべきである^2

現状 git lfs migrate info は次のようである。

❯ git lfs migrate info --everything
migrate: Sorting commits: ..., done.                                                                                                                                                                        
migrate: Examining commits: 100% (168/168), done.                                                                                                                                                           
*.json  1.4 GB  228/228 files   100%
*.csv   1.3 GB    90/90 files   100%
*.xml   708 MB    30/30 files   100%
*.yaml  575 MB    30/30 files   100%
*.py    122 KB    45/45 files   100%

データファイル群の履歴が 1 GB を超えていることが分かる。

解決策

Git LFS を導入し、データファイル群を Git LFS の管理対象とする。Git クローンについては、Git LFS の git lfs clone を用いれば、クローン速度の大幅な上昇が見込める^1。 フォークレポジトリでデータファイル群の Git LFS へのマイグレーションを試みたが、現在 GitHub は公開フォークレポジトリへの Git LFS のプッシュを認めていないらしく、移行を断念した^3。そのため、レポジトリオーナーである @Mimori256 にお願いしたい。

手順

  1. Git LFS から Git LFS をインストールする
  2. レポジトリディレクトリでコマンド git lfs migrate import --include="*.json,*.csv,*.xml,*.yaml" --everything を実行する
  3. コマンド git push --force を実行し、オリジンのコミット履歴を変更する。
Mimori256 commented 10 months ago

マイグレーションを反映させました。

yudukikun5120 commented 10 months ago

Git LFS の対象になるファイルには次の画像にある「Stored with Git LFS」という表示がされます。

image

また .gitattributes が追加され、その内容は次のようになります。

*.csv filter=lfs diff=lfs merge=lfs -text
*.model filter=lfs diff=lfs merge=lfs -text

公式の参考文書には Migrating existing repository data to LFS があります。

Mimori256 commented 10 months ago

image アップロードには成功しているようですが、何故かうまく反映されていなかったみたいですね。再度試みたのですが quota に当たってしまったのでしばしお待ちを...