feat: add head_branch to pull request diff status (#23076)

Adds the `head_branch` field (the source/feature branch name of a PR) to
the diff status pipeline. Previously only `base_branch` (target branch)
and the head commit SHA were captured from the GitHub API, but not the
head branch name itself.

## Changes

- **Migration 438**: Add `head_branch` nullable TEXT column to
`chat_diff_statuses`
- **gitprovider**: Parse `head.ref` from the GitHub API response
(alongside `head.sha`) and add `HeadBranch` to `PRStatus`
- **gitsync**: Wire `HeadBranch` through `refreshOne()` into the DB
upsert params
- **worker**: Map `HeadBranch` in `chatDiffStatusFromRow()`
- **coderd**: Convert `HeadBranch` in `convertChatDiffStatus()`
- **codersdk**: Expose as `head_branch` (`*string`, omitempty) in
`ChatDiffStatus` API response
- **Tests**: Updated `github_test.go` pull JSON fixtures and assertions
This commit is contained in:
Kyle Carberry
2026-03-14 17:24:19 +00:00
committed by GitHub
parent 3f7f25b3ee
commit 0d3e39a24e
14 changed files with 54 additions and 24 deletions
+6 -4
View File
@@ -269,6 +269,7 @@ func (g *githubProvider) FetchPullRequestStatus(
Commits int32 `json:"commits"`
Head struct {
SHA string `json:"sha"`
Ref string `json:"ref"`
} `json:"head"`
User struct {
Login string `json:"login"`
@@ -310,10 +311,11 @@ func (g *githubProvider) FetchPullRequestStatus(
reviewInfo := summarizeReviews(reviews)
return &PRStatus{
Title: pull.Title,
State: state,
Draft: pull.Draft,
HeadSHA: pull.Head.SHA,
Title: pull.Title,
State: state,
Draft: pull.Draft,
HeadSHA: pull.Head.SHA,
HeadBranch: pull.Head.Ref,
DiffStats: DiffStats{
Additions: pull.Additions,
Deletions: pull.Deletions,