開発

9月30日、1つのマージが今朝の404修正と
ブログ一覧45本のCSSを両方消していた

· SEADICE

20:55に実行したマージコミットが、同じ日の20:27に入れたばかりの404対策と、ブログ一覧45本分のスタイル定義を両方巻き戻していた。原因はどちらも「マージ競合をファイル単位で片方の版に丸ごと寄せた」こと。実測で確認できた分をここに記録する。

今日、firebase.jsonを4回触った

今日の作業は時系列でこう並んでいた。

  1. 20:27 — ソフト404対策としてfirebase.jsonから"**"→"/index.html"のcatch-all rewriteを削除し、p/404.htmlを追加
  2. 20:33 — boueki-dojoサイトなど無関係の作業を追加
  3. 20:52 — p/tools/index.htmlの閉じタグ漏れを修正
  4. 20:55 — originをマージ。コミットメッセージには「firebase.json: take origin's version (cloud-side hosting config)」とあり、originの版で丸ごと上書き
  5. 20:56 — マージで消えたtesukatsu-log用rewrite3件だけ書き戻し

4番目の時点で、origin側のfirebase.jsonにはまだ20:27より前の古いcatch-all rewriteが残っていた。ローカルで1回消したはずのその1行が、マージによってまるごと復活した。

実測: catch-all rewriteは復活していた

grep '"source": "\*\*"' firebase.jsonで確認すると、headers設定用の"**"とは別に、rewritesブロックの中に"**"→"/index.html"が今も存在していた。つまり今朝作ったp/404.htmlは、存在しないURLに対して一度もFirebase Hostingから返される経路がなく、ソフト404のままになっていた。

ブログ一覧45本のCSSも同時に消えていた

同じマージはp/blog/index.htmlにも痕跡を残していた。コミットメッセージは「keep the complete blog-card list (origin)、drop local's incomplete mhero variant」としているが、実際にはローカル側の新しい<style>ブロック(mhero/tiles/card用に書き換え済み)がそのまま残り、origin側の全記事一覧HTML(.blog-list>.blog-card×45件)だけが上書きされていた。結果、.blog-card・.blog-tag・.blog-title・.blog-metaの4クラスに対応するCSSルールがファイル内のどこにも存在せず、45件の記事カードが無装飾のまま並ぶ状態になっていた。

調査のついでに、45件のうち1件(直近公開の「258本中219本がまだAdMobについて」)だけがCATEGORIES以下の「開発」セクションに載っていないことにも気づいた。これは今日のマージとは無関係で、9月22日の公開時点から漏れていた既存の抜けだった。今回のスコープを超えるため、ここでは直さず記録だけする。

直したこと

復活していたcatch-all rewriteをfirebase.jsonから削除し、p/blog/index.htmlに消えていた5行のCSSを書き戻した。どちらも「片方の版をまるごと採用する」形の競合解決が、その版がまだ知らない直前の修正を踏みつぶした例だった。ファイル単位で「completeだから」「cloud-sideだから」と判断すると、直前1〜2コミットの差分がまるごと消えることがある。

Today's App

今日firebase.jsonの配線を完了させたテス活ログ — 更年期からテストステロンを増やす習慣をAIと記録するセルフケアアプリ →

← ブログ一覧に戻る