今週のコーディング素振り(2018/5/15)

gitの仕組みを学習するために、引き続きgitのコマンドを実装してます。
今回は git hash-object -w を実装してみました。
このコマンドは git add の中で実行されている低レベルのコマンドです。
このコマンドを実行すると、ファイルに含まれるデータをgit のオブジェクトDB (.git/objects) に保存します。

gitのオブジェクトDBに書き込むために、内容をzlib圧縮するのは compless() メソッドで処理しています。
コンパイルしたプログラムを実行して、ファイルをオブジェクトDBに保存してみます。
% echo sample > sample.txt
% kotlin -classpath ../mygit/out/production/classes GitHashObjectWKt ./sample.txt ./.git/objects/d6
./.git/objects/d6/4a3d962e787834f9b43312cdcdb96ef357709a
% git cat-file -p d64a3d962e787834f9b43312cdcdb96ef357709a
sample

保存したデータを git cat-file -p で読み出すことができました。やった!
git hash-object -w を実装して得た知見:

  • オブジェクトDBの中身のファイルパーミッションはリードオンリーにセットされてる。一度作成されたオブジェクトは、内容が書き換えられることがないのでこうなってるんだとどっかに書いてました。
  • gitのオブジェクトDBのファイル名は、sha1ハッシュの値
  • gitのオブジェクトDBのファイルは、zlibで圧縮されてる。
  • Kotin, Javaでzlib圧縮するにはDeflaterを使う

今週は以上です。

リモートワークも可能なWebエンジニア&フロントエンドエンジニアを募集しています。

WEBエンジニア・プログラマー求人採用情報
フロントエンドエンジニア求人採用情報

カテゴリー別ブログ記事


Webエンジニア・プログラマー >

フロントエンド >

QAエンジニア >

会社・職場環境紹介 >

社内イベント >

在宅リモートワーク >

関連記事

最近の記事 おすすめ記事
  1. 新人さん向けの品質についての読書会

  1. mac m1 proの開発環境作り

  2. オンライン・オフィスランチ会

  3. 育休をとりました

カテゴリー

アーカイブ

検索


TOP
TOP