Open2

(没) パスIDの生成手法変更

okuokuokuoku

Yuniframeのビルドシステムでは、各ソースコードファイルにパスIDをアサインしている。パスIDはファイルが リポジトリ上に初登場したタイミングで計算され、リネームされても変更されない ため、警告等をこれに紐づけて管理することで、プロジェクトの構成変更に対して品質管理を適切に行える。

... これをGitHub Actionsで振るように変更したいが、今のパスID生成は超コストが掛かっているのでそれをもうちょっと安くする手法を考える必要がある。

現状のパスIDの導出

現状のパスIDは

sha256(初登場コミットのSHA + フルパス)

で導出している( + は連結)。このため、ディレクトリを移動すると多くのファイルのパスIDを再生成する必要がある。

再帰的なパスID

フルパスを利用したパスIDは、パスに含まれる途中のディレクトリ名を変更するだけでも大量のファイルのパスIDを再生成する必要が生じてしまいちょっと効率が悪い。

よって、ディレクトリにもパスIDをアサインして、

sha256(初登場のコミットSHA + ファイルを含むディレクトリのパスID + ファイル名)

に変更する。

okuokuokuoku

没にした

ディレクトリのリネームが不完全な場合(一部のファイルだけ移動したような場合)の方が圧倒的に多そうなので一旦没にしてフルパスベースのIDで行ききってみることにした。

https://zenn.dev/okuoku/scraps/64115d7aedd6dd