虹ヶ咲学園ソフトウェア開発同好会

製造業界で発信活動が少ないことに対して、自らのアウトプットを増やすためのブログです。

git lfsを試してみる

まとめ

  • git lfsについての導入足跡

 

みなさんこんばんは。

今週会社で

「ファイル管理にgitを使いたい」

なる要望があったため、導入の足跡を書いていこうと思います。

個人的にはgitなんてエンジニアの初歩の初歩、というイメージなのですが、なにせ今の部署は非プログラマー集団なので、そこのところに一石を投じる役目を担ったわけです。

…さて本題に入りますと、ヒアリングした結果、解決したい内容は以下のようでした。

  • とにかく既存のバージョン管理はいやだ
  • 画像や音声ファイルも管理したい
  • できれば仕様書のエクセルやワードも管理したい
  • 社内のしかも1係の運用でまずはトライしたいのでGitHubもGitLabも使いたくない

とのことだったので、「gitはテキストベース以外は得意じゃないんだよな」くらいは頭にあった自分は「エクセル git」とか「バイナリ git」とかって調べてみたわけです。

で、でてきた解決策がgit lfsだったので、ここにその足跡を残しておきます。 

 

  • git lfsをインストールする

(前提)

mac

brewが入っている

brew install git-lfs

詳しくはInstalling をみてね

前述「GitHubもGitLabも使いたくない」とのことだったので、今回はリモート用としてgit-bare、ローカル用としてgit-nodeディレクトリを作成します。

 

file構成

files
  • sourcetreeをインストール

これも要望で、「コマンドラインはなんか上級者向けに見えるからできればGUIでやりたい」とのことだったので、まあたしかになあと思いつつsourcetreeをインストールします。sourcetreeのインストールと操作方法は無限に出てくるしgit使ったことある人なら直感的なので詳しくは述べません。

  • git-bareで

git init --bare --share

bareリポジトリを作成します。

コマンドラインは使いたくないんじゃなかったのかよ、とツッコミはありますが、まあGitHub使えないので勘弁)

  • git-bareにgit lfsを導入

ここが今回の肝ナンバー1ですね。

git lfs install

…まあこれだけなんですけど。フォルダ内を確認すると、lfsフォルダができています。おお…!

lfsフォルダが作成されている

lfsフォルダが作成されている
  • git-nodeにsourcetreeでクローン
  • git-nodeで適当にreadme.mdとか作ってmasterを作成

touch readme.md

echo git-lfs-training >> readme.md

sourcetreeでコミット、push。

git lfs track "*.jpg"

これをすると、.gitattributesというファイルができています。ここにはこんな感じでjpgはlfsで管理しますよーと書かれるんですね。

*.jpg filter=lfs diff=lfs merge=lfs -text

  • git-nodeに写真を入れてコミットプッシュしてみる

先日撮ったお花見の写真をコミットしてみます。

lfs管理されたjpgファイルをコミットしてみる

lfs管理されたjpgファイルをコミットしてみる

ちなみにコミット前にgit-bare側のobjectsフォルダ(通常のgit管理される圧縮されたファイルたち)とlfsフォルダ(lfs管理対象にしたファイルはここに入る)のサイズを見てみると、こんな感じです。

objectsフォルダの容量は7KB

lfsフォルダのサイズは0KB

lfsフォルダのサイズは0KB
  • コミット後のgit-bare内のobjects、lfsフォルダを見てみると…

lfsフォルダに画像が圧縮(といっても同サイズ)されて保管されている

lfsフォルダに画像が圧縮(といっても同サイズ)されて保管されている

いい感じですね。

これはgit-bare側でgitコマンドを打っても確認できます。

git lfs ls-files

git lfsコマンドでも管理されていることが確認できる

git lfsコマンドでも管理されていることが確認できる
  • 試しに他のディレクトリも作って遅くないか見てみても、そんなに重くなかったです。(体感)
  • 音楽ファイルもいけました。エクセルは機会があれば(お腹が減って記事を書く力がorz)

 

終わりに

lfsが生きてくるのはさらに大容量ファイルでの運用かもです。lfsGitHub公式でも使われてる技術なのでちぃはひとつ覚えました。