AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

git reftables

放置されていたリポジトリの整備をやっていて git fetch -p でリモートリポジトリと削除したブランチの同期をしようとした所、以下のエラーが。

#case-insensitive

大文字・小文字を区別できない。

❯ git fetch -p

...

error: You're on a case-insensitive filesystem, and the remote you are trying to fetch from has references that only differ in casing. It is impossible to store such references with the 'files' backend. You can either accept this as-is, in which case you won't be able to store all remote references on disk. Or you can alternatively migrate your repository to use the 'reftable' backend with the following command:

git refs migrate --ref-format=reftable

Please keep in mind that not all implementations of Git support this new format yet. So if you use tools other than Git to access this repository it may not be an option to migrate to reftables.

「おめえのローカルファイルシステム、大文字小文字の違いを吸収できないのに、fetch しようとしているリモートリポジトリには大文字小文字違いで複数リポジトリあっぞ!」とのことで「え、ええ?」という顔に。

リモート側を修正しようかと思ったが、開発に参加していた人達がみんな居なくなってしまったので、「じゃあ俺が整理したるか! というか衝突しているブランチ名ぜんぶマージ済みじゃねえか消せ」という感じだった。

ので、ダルくなってしまったしパフォーマンスが向上するし、変更されるのは作業ローカルで、Github 側のリモートリポジトリは影響が出ない (reftable を使う、という変更を push する必要はない) とのことで、注釈が書かれている reftable に気軽に移行することにした。

reftables

注釈の通り、「この先、アプリケーション側が対応していない可能性はあるぞ」とのことだったけど、ダメだったら別ディレクトリに clone してくればいいや、という顔だしで雑に。

❯ git fetch -p

... (fetch 内容が出てくる) ...

ヨシ! ということで雑に解決したぞ!

Git 2.45.0 で生まれていた

全然知らなかったのだけど、2024 年頃のリリースで生まれていたようだった。

about.gitlab.com

使う上で不具合もなかったので git のバージョンアップを実施していなかったのだけど、先日 history が使いたいという理由で雑にアップデートした。

従前 fetch -p して問題が出たりしていなかった (git が丸めたりしてくれていた?) ので、これが引き金なのかなあ、よくわからんのだった。

ちなみに

「APFS で不具合出てたならわかるけど、Mac OS 拡張(ジャーナリング)でも大文字小文字認識オプションあるじゃん」と言われたらそれはそう。

うろ覚えなんですが、たしか 2019 年あたりの Intel Mac だか乗り換え時に、大文字小文字有効にしたら当時の Photoshop がインストールできなくて adobe にキレ散らかした、みたいな記憶があるので、たぶんその時に case-insensitive なファイルシステムに戻したんだと思われる。

は〜まったく。