Skip to content

merge-when-green の --expect-head が短い SHA を完全一致で比べ、同じ先端でも head_moved で止まる #2041

Open

Description

@takemi-ohama

何が起きたか

確定仕様 PR #2040 で merged-steps.py merge-when-green 2040 --expect-head 2bb66a6c1(git log --oneline の短い SHA)を打つと、先端が一致しているのにマージせず止まった。

{"tool": "merged", "status": "stopped", "summary": "#2040 の先端が 2bb66a6c でない(今は 2bb66a6c・OPEN)。マージしない", "items": [{"kind": "pr", "name": "#2040", "result": "head_moved", "head": "2bb66a6c14a618cbac108b61737ad49cfb1ac48b", "expected": "2bb66a6c1"}], "metrics": {"waits": 0}}

完全な SHA で打ち直すと通った。

原因

plugins/ndf/scripts/merged_lib/checks.py の GreenWatch._check_expected が sha == expect の完全一致だけで比べる。誤りの文はどちらも 8 文字に切って出すため、同じ値に見えて食い違いの理由が読めない。

依頼

次のどちらかにする。

  • --expect-head を受け取った時点で git rev-parse で完全な SHA へ解決する(解決できなければ終了コード 2)
  • 短い SHA を拒否し、誤りの文で完全な SHA を求める

受け入れ条件(案)

  • 先端と同じコミットを指す短い SHA を渡したとき、止まらずに待ってマージすること
  • 違うコミットを指すときは今と同じく head_moved で止まること

起点: #2008(スプリント a1 の確定仕様 PR #2040 のマージ)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions