Open3
gitdb: Bare Gitリポジトリをデータベースとして使う
Gitリポジトリをデータベースとして使う ってのはかなり色々とやってるけど、その都度書き込みルーチンを書いてるのが気になるのでライブラリとして纏められないか問題。
prev
ReadQueue / WriteQueue
基本的には非同期で動く想定とする。つまり、gitリポジトリにReadQueueやWriteQueueを接続してコマンドを送る形になる。
どちらも明示的に dispose
する必要がある。
ReadQueue
create(gitdir) => Q
q.get(ref, path) => JSON
q.dispose() => {}
path
はファイルパスをあらわす。拡張子センシティブ。
WriteQueue
create(gitdir, tempdir) => q
q.set(path, JSON) => sha1
q.commit(ref, opts) => commit
q.dispose() => {}
create
には tempdir
として書き込み可能なテンポラリディレクトリを指定する。テンポラリディレクトリはユニークでなければならない。
set
はindexにファイルを追加する。 commit
するまで内容は更新されない。
commit
操作はオプションを受けとる。オプションは、
{
msg: "コミットメッセージ",
user: "author",
email: "author E-mail",
name: "author name",
date: ...,
committer: "committer",
committer_email: "committer E-mail",
committer_name: "committer name",
committer_date: ...
}
書き込みロジック
... 要するにこの辺の環境変数を設定して git
を起動するだけのwrapperとなる。C実装はlibgit2にしたいけど。
GIT_INDEX_FILE
GIT_WORK_TREE
GIT_DIR
GIT_AUTHOR_EMAIL
GIT_AUTHOR_DATE
GIT_AUTHOR_NAME
: