Skip to content

tests/ref の画像などを上流 v0.14.2 と一致させる #436

Description

@kimushun1101

現状

tests/ref/ には、Typst のテストで「正しい組版結果」として比較に使う画像が入っています。翻訳では触らないファイルなので、本来は取り込んだ上流のバージョンと完全に一致しているはずのものです。

ところが上流 v0.14.2 と比べると、約1,900枚のうち900枚が一致していません。

  • 上流で更新されたのに古いまま残っている画像: 860枚
  • 上流では削除・移動済みなのに残っている画像: 40枚

同じ理由で、Cargo.lock と tests/suite/ の3ファイル(layout/place.typ、model/footnote.typ、pdf/embed.typ)も上流とずれています。

原因

以前のマージワークフローは履歴を最新の1コミット分しか取得していなかったため、git が main と上流の「共通の出発点」を見つけられず、内容の違うファイルを軒並みコンフリクト扱いにしていました。画像はテキストと違ってコンフリクトの印を書き込めないので、fork 側の古い版が何の痕跡も残さずに確定し、それがリリースのたびに積み重なっていました。

この仕組みは #426 で直っているので、今後新たにずれることはありません。

放っておいても直らない理由

直ったワークフローは、共通の出発点(前回取り込んだ上流のバージョン)から「どちらの側が変えたか」を見て、採る内容を決めます。この見方では、古いまま残った画像は fork 側が意図して書き換えたファイル に見えてしまいます。

  • 次のリリースで上流がその画像を更新した場合: 両側が変えたことになるのでコンフリクトになり、ワークフローが上流の版を採るので直ります
  • 上流が触らなかった場合: fork 側の変更として扱われ、古い版が黙って残ります

そのため、バージョンを上げるたびに一部は直りますが、いつまで待ってもゼロにはなりません。

提案

tests/ref/、tests/suite/ の上記3ファイル、Cargo.lock を、上流 v0.14.2 の内容でまるごと置き換える PR を1本出します。上流に存在しないファイルは削除します。

一度揃えてしまえば、以降の取り込みでは「fork 側は何も変えていない」状態になるので、上流の更新・追加・削除がコンフリクトなしでそのまま入るようになります。

実施のタイミング

#435(v0.14.2 の取り込み)のマージ後、v0.15.0 の取り込みより前に行う必要があります。次回の取り込みは v0.14.2 を出発点にして差分を見るので、v0.14.2 に揃えておくことで効果が出ます。

受入条件

  • tests/ref/、tests/suite/、Cargo.lock が、上流 v0.14.2(b33de9de1)と完全に一致する

方針に問題がなければ、私から PR を出すこともできます。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions