feat(dev): track pull request head revisions

This commit is contained in:
Thomas Camlong committed 2026-08-02 08:19:12 +02:00
1 parent 49a41431b9
commit d096aecd59
2 files changed
+9 -2

No files matched your search

+6 -2
View File
@@ -32,6 +32,7 @@ type PR struct {
Title string `json:"title"`
Author string `json:"author"`
HeadRef string `json:"headRefName"`
HeadSHA string `json:"headRefOid"`
CIState string `json:"ciState"`
IsDraft bool `json:"isDraft"`
UpdatedAt string `json:"updatedAt"`
@@ -45,6 +46,7 @@ type rawPR struct {
Login string `json:"login"`
} `json:"author"`
HeadRefName string `json:"headRefName"`
HeadRefOID string `json:"headRefOid"`
UpdatedAt string `json:"updatedAt"`
StatusCheckRollup []rawCheck `json:"statusCheckRollup"`
}
@@ -108,7 +110,7 @@ func listPRs(ctx context.Context, limit int, includeBots, refresh bool) ([]PR, e
"--repo", Repo,
"--state", "open",
"--limit", fmt.Sprint(limit),
"--json", "number,title,author,headRefName,updatedAt,isDraft,statusCheckRollup",
"--json", "number,title,author,headRefName,headRefOid,updatedAt,isDraft,statusCheckRollup",
).CombinedOutput()
if err != nil {
err = commandError(err, out)
@@ -130,6 +132,7 @@ func listPRs(ctx context.Context, limit int, includeBots, refresh bool) ([]PR, e
Title: r.Title,
Author: r.Author.Login,
HeadRef: r.HeadRefName,
HeadSHA: r.HeadRefOID,
CIState: rollupState(r.StatusCheckRollup),
IsDraft: r.IsDraft,
UpdatedAt: r.UpdatedAt,
@@ -173,7 +176,7 @@ func commandError(err error, output []byte) error {
func GetPR(ctx context.Context, number int) (*PR, error) {
out, err := exec.CommandContext(ctx, "gh", "pr", "view", fmt.Sprint(number),
"--repo", Repo,
"--json", "number,title,author,headRefName,updatedAt,isDraft,statusCheckRollup",
"--json", "number,title,author,headRefName,headRefOid,updatedAt,isDraft,statusCheckRollup",
).CombinedOutput()
if err != nil {
return nil, commandError(err, out)
@@ -188,6 +191,7 @@ func GetPR(ctx context.Context, number int) (*PR, error) {
Title: r.Title,
Author: r.Author.Login,
HeadRef: r.HeadRefName,
HeadSHA: r.HeadRefOID,
CIState: rollupState(r.StatusCheckRollup),
IsDraft: r.IsDraft,
UpdatedAt: r.UpdatedAt,
+3
View File
@@ -84,5 +84,8 @@ func TestListPRsExcludesBotsIntegration(t *testing.T) {
if isBot(pr.Author) {
t.Fatalf("bot PR was not filtered: #%d by %s", pr.Number, pr.Author)
}
if pr.HeadSHA == "" {
t.Fatalf("PR #%d has no head SHA", pr.Number)
}
}
}