2020-04-04

Git-clone ストレージ容量の削減

Git-cloneをつかうと、すべての履歴がコピーされるため、時間がかかるし、ストレージ容量をかなり消費する。 クローン元に応じて2種類の方法により消費するストレージを削減することができる。

ハードリンク - 同じファイルシステムからクローンする場合

同じファイルシステムからクローンする場合、.git/objects下のデータをハードリンクで作成することで、時間・容量を減らせる。
git clone --local repository [directory]
objectsのファイルは、一度作成されると中身が書き換えられることはないので、特に使用する上で制約はないはずだ。 Git-fetchで新しいコミットを取り込んだ場合は、新しいファイルが作成されるようだ。 また、元のrepositoryでgit-gcを使った場合など、ハードリンクが切れて、消費する容量は大きくなる可能性がある。

浅いクローンをつくる - 外部のURLからクローンする場合

他のファイルシステムや外部のURL (git://...など) からクローンする場合、--depthオプションで浅いクローンを作ることで時間・容量を節約できる。
git clone --depth 1 repository [directory]
もしローカルのレポジトリからクローンする場合、file://を前につけないと、--depthオプションが無視されてそのままクローンが開始されてしまう。

浅いクローンでは、変更履歴が取得されないので、履歴を遡るような用途には使用できない。 もし後で履歴が必要になった場合、git fetchで取得することができる。

もともと、何かのプロジェクトのソースを探していたらgit clone --depthで取得する方法が書かれていてこの方法を見つけたのだが、 git clone --depthについては以下のサイトにわかりやすく書かれている。

0 件のコメント:

コメントを投稿