Skip to content

Pull Requests

A Pull Request (PR) in GuideMode represents a code change that’s being reviewed before merging. PRs are synced from code hosting providers (GitHub, GitLab, Bitbucket) and are central to measuring code review efficiency and deployment velocity.

Pull Requests in GuideMode:

  • Track PR metadata - titles, descriptions, branches, and timestamps
  • Monitor review workflow from creation to merge
  • Sync aggregate metrics - lines added/deleted, files changed, commit counts
  • Link to issues for delivery tracking
  • Connect to deployments for lead time calculations
  • Power DORA metrics like cycle time

Pull requests move through a well-defined lifecycle:

Diagram
State Description Common Scenarios
draft Work in progress, not ready for review Early feedback, CI checks
open Ready for review Standard review flow
merged Code merged to target branch Successful delivery
closed PR closed without merging Rejected, superseded, abandoned
Field Type Description
title string PR title/summary
body string PR description
url string Web URL to PR
state enum ‘open’, ‘closed’, ‘merged’, ‘draft’
number integer PR number
isDraft boolean Whether PR is a draft
Field Description
headBranch Source branch (feature branch)
baseBranch Target branch (main, develop, etc.)
headSha Latest commit SHA on source
baseSha Base commit SHA on target
Field Description
merged Whether PR was merged
mergeable Whether PR can be merged (no conflicts)
mergeCommitSha SHA of the merge commit
mergedById User who merged (GuideMode ID)
mergedByUsername Username of merger
Field Description
authorId PR creator (GuideMode user)
authorExternalId Provider’s author ID
authorUsername Author’s username

PRs track detailed metrics about the code changes:

Diagram
Metric Description
additions Lines of code added
deletions Lines of code removed
changedFiles Number of files modified
commits Number of commits in PR

These metrics help identify:

  • PR size - Large PRs may need splitting
  • Churn - High deletion count may indicate refactoring
  • Complexity - Many files may increase review time
Field Description
reviewerCount Number of reviewers assigned/participated
commentCount Total comments (general + code)
reviewCommentCount Code review comments specifically

Individual reviews have their own states:

Diagram
Review State Description
pending Review requested but not started
commented Reviewer left comments (no approval/rejection)
approved Changes approved
changes_requested Reviewer requested changes before merge
dismissed Review was dismissed

GuideMode tracks several timestamps throughout the PR lifecycle to calculate metrics:

Diagram
Timestamp Description Used For
createdAt When PR was opened Cycle time start
firstReviewAt First review received Review velocity
firstApprovalAt First approval received Approval time
mergedAt When PR was merged Cycle time end
closedAt When PR was closed (if not merged) Abandonment tracking
updatedAt Last modification Freshness
Metric Calculation Measures
Review Time firstReviewAt - createdAt How quickly reviewers respond
Cycle Time mergedAt - createdAt Total time from PR creation to merge
Diagram Diagram

PRs can link to issues they address:

Diagram
Link Type Description Effect on Issue
fixes PR fixes an issue Closes issue when merged
closes PR closes an issue Closes issue when merged
resolves PR resolves an issue Closes issue when merged
references PR is related No automatic action

These links are detected from:

  • PR description (“Fixes #123”)
  • Commit messages (“Closes #456”)
  • GitHub linking UI

See Issue Linking for cross-tool linking.

PRs are linked to deployments to track delivery:

Diagram

Links are created by:

  • SHA matching - Deployment SHA matches PR merge commit
  • Webhooks - Provider sends deployment events
  • Manual - Explicitly linked

Time from PR creation to merge:

Cycle Time = mergedAt - createdAt

Measures how long code changes take to review and merge.

Time from creation to first review:

Review Time = firstReviewAt - createdAt

Measures how quickly reviewers respond to PRs.

Aggregate measure of change scope:

Total Changes = additions + deletions
Change Ratio = additions / deletions

PRs can have labels for categorization:

Field Description
name Label name
color Hex color code
description Label description

Common label uses:

  • Priority indicators
  • Type of change (feature, bugfix, refactor)
  • Team ownership
  • Review status

The metadata field stores provider-specific data:

{
"milestone": {
"id": 123,
"title": "v2.0"
},
"requested_reviewers": ["alice", "bob"],
"ci_status": "success"
}