git lfsを試してみる
まとめ
- git lfsについての導入足跡
みなさんこんばんは。
今週会社で
「ファイル管理にgitを使いたい」
なる要望があったため、導入の足跡を書いていこうと思います。
個人的にはgitなんてエンジニアの初歩の初歩、というイメージなのですが、なにせ今の部署は非プログラマー集団なので、そこのところに一石を投じる役目を担ったわけです。
…さて本題に入りますと、ヒアリングした結果、解決したい内容は以下のようでした。
- とにかく既存のバージョン管理はいやだ
- 画像や音声ファイルも管理したい
- できれば仕様書のエクセルやワードも管理したい
- 社内のしかも1係の運用でまずはトライしたいのでGitHubもGitLabも使いたくない
とのことだったので、「gitはテキストベース以外は得意じゃないんだよな」くらいは頭にあった自分は「エクセル git」とか「バイナリ git」とかって調べてみたわけです。
で、でてきた解決策がgit lfsだったので、ここにその足跡を残しておきます。
- git lfsをインストールする
(前提)
brewが入っている
詳しくはInstalling をみてね
- bareとnon-bareなリポジトリを作る
前述「GitHubもGitLabも使いたくない」とのことだったので、今回はリモート用としてgit-bare、ローカル用としてgit-nodeディレクトリを作成します。
- sourcetreeをインストール
これも要望で、「コマンドラインはなんか上級者向けに見えるからできればGUIでやりたい」とのことだったので、まあたしかになあと思いつつsourcetreeをインストールします。sourcetreeのインストールと操作方法は無限に出てくるしgit使ったことある人なら直感的なので詳しくは述べません。
- git-bareで
git init --bare --share
bareリポジトリを作成します。
(コマンドラインは使いたくないんじゃなかったのかよ、とツッコミはありますが、まあGitHub使えないので勘弁)
- git-bareにgit lfsを導入
ここが今回の肝ナンバー1ですね。
git lfs install
…まあこれだけなんですけど。フォルダ内を確認すると、lfsフォルダができています。おお…!
- git-nodeにsourcetreeでクローン
- git-nodeで適当にreadme.mdとか作ってmasterを作成
touch readme.md
echo git-lfs-training >> readme.md
sourcetreeでコミット、push。
- git-nodeでjpgファイルをトラッキング
git lfs track "*.jpg"
これをすると、.gitattributesというファイルができています。ここにはこんな感じでjpgはlfsで管理しますよーと書かれるんですね。
- git-nodeに写真を入れてコミットプッシュしてみる
先日撮ったお花見の写真をコミットしてみます。
ちなみにコミット前にgit-bare側のobjectsフォルダ(通常のgit管理される圧縮されたファイルたち)とlfsフォルダ(lfs管理対象にしたファイルはここに入る)のサイズを見てみると、こんな感じです。
- コミット後のgit-bare内のobjects、lfsフォルダを見てみると…
いい感じですね。
これはgit-bare側でgitコマンドを打っても確認できます。
git lfs ls-files
- 試しに他のディレクトリも作って遅くないか見てみても、そんなに重くなかったです。(体感)
- 音楽ファイルもいけました。エクセルは機会があれば(お腹が減って記事を書く力がorz)
終わりに
lfsが生きてくるのはさらに大容量ファイルでの運用かもです。lfsはGitHub公式でも使われてる技術なのでちぃはひとつ覚えました。