Open3
GitDB: 手動Git notes
CIの結果を入れるのにGit notesを活用してみてはどうか説。ただ、yuniframeは動作プラットフォームや依存ライブラリがバカみてぇに多く、noteを頻繁に変更(追加)する必要がある。
というわけで、git notesが普通のGitリポジトリで表現できるんだから、手動で作った方が効率的な気がする。
fanout
Git notesは比較的かしこい方法でGitリポジトリをDBとして利用している。
基本的にはnotesがつくコミットは少いということを想定してより "浅い" 階層で記録するようになっている。これを真面目に実装するのは面倒だから、今回は 2/2/36 fanout
を常に使うことにする。
できた
やっていることは、単に適当なファイル名(コミットのoidを適当に区切ったもの、拡張子不要)にnotesとなるファイルを書き出しているだけ:
commit 8c44610926f31b579a47d555a36ceb5a5024058c
Author: nobody <nobody>
Date: Sat Apr 6 15:49:11 2024 +0900
Write notes
diff --git a/06/39/f144b5329cdff6695ab29789c636aa143d38 b/06/39/f144b5329cdff6695ab29789c636aa143d38
new file mode 100644
index 0000000..bf0c5f2
--- /dev/null
+++ b/06/39/f144b5329cdff6695ab29789c636aa143d38
@@ -0,0 +1,2 @@
+(A) Note for 0639f144b5329cdff6695ab29789c636aa143d38
+with some additional message
\ No newline at end of file
gitのconfigには2つのdisplayRefを書いて:
[notes]
displayRef = refs/notes/commits
displayRef = refs/notes/optional
git log
とすると両方が出る:
commit 0639f144b5329cdff6695ab29789c636aa143d38
Author: nobody <nobody>
Date: Sat Apr 6 15:46:03 2024 +0900
Testing
Notes:
(A) Note for 0639f144b5329cdff6695ab29789c636aa143d38
with some additional message
Notes (optional):
(B) alternative Note for 0639f144b5329cdff6695ab29789c636aa143d38