Pull Request Process
Pull Request Process
Section titled “Pull Request Process”This guide covers how to submit, review, and merge pull requests.
Before Creating a PR
Section titled “Before Creating a PR”1. Ensure Quality
Section titled “1. Ensure Quality”# Build the projectnpm run build
# Run lintingnpm run lint
# Run testsnpm run test2. Stay Updated
Section titled “2. Stay Updated”# Fetch latest changesgit fetch upstream
# Rebase your branchgit rebase upstream/main
# Resolve any conflicts3. Clean History
Section titled “3. Clean History”Keep commits focused and meaningful:
# Squash WIP commitsgit rebase -i HEAD~3 # Interactive rebase last 3 commitsCreating a Pull Request
Section titled “Creating a Pull Request”PR Title
Section titled “PR Title”Use the same format as commit messages:
feat(web): Add scholarship deadline remindersfix(api): Handle empty roster responsedocs: Update API referencePR Description
Section titled “PR Description”Use this template:
## Summary
Brief description of what this PR does.
## Changes
- Added feature X- Fixed bug Y- Updated documentation for Z
## Screenshots
(If applicable, add screenshots or GIFs)
## Testing
- [ ] Tested locally- [ ] Build passes- [ ] Linting passes- [ ] Tests pass
## Related Issues
Closes #123Related to #456Draft PRs
Section titled “Draft PRs”Use draft PRs for:
- Work in progress
- Early feedback
- Discussion before completion
Review Process
Section titled “Review Process”What Reviewers Look For
Section titled “What Reviewers Look For”- Functionality - Does it work as intended?
- Code Quality - Is the code clean and maintainable?
- Tests - Are there adequate tests?
- Documentation - Is it documented?
- Performance - Any performance concerns?
- Security - Any security issues?
Responding to Reviews
Section titled “Responding to Reviews”- Be open to feedback
- Explain your reasoning
- Ask for clarification if needed
- Update the PR based on feedback
Addressing Comments
Section titled “Addressing Comments”# Make changes based on feedbackgit add .git commit -m "Address review feedback"git pushOr amend if it’s a small fix:
git add .git commit --amend --no-editgit push --force-with-leaseReview Guidelines (For Reviewers)
Section titled “Review Guidelines (For Reviewers)”Be Constructive
Section titled “Be Constructive”❌ "This is wrong"✅ "Consider using X here because it handles edge case Y better"Explain Why
Section titled “Explain Why”❌ "Don't use var"✅ "Prefer const/let over var for block scoping and preventing accidental reassignment"Suggest Improvements
Section titled “Suggest Improvements”✅ "Nice work! One suggestion: we could simplify this with..."Approve When Ready
Section titled “Approve When Ready”Don’t block PRs for minor issues. Approve with suggestions:
Looks good! A few optional suggestions, but feel free to merge.Merging
Section titled “Merging”Requirements for Merge
Section titled “Requirements for Merge”- At least one approval
- All CI checks pass
- No unresolved conversations
- Branch is up to date
Merge Strategy
Section titled “Merge Strategy”We use Squash and Merge:
- Combines all commits into one
- Keeps main branch history clean
- Preserves detailed history in PR
After Merging
Section titled “After Merging”The author should:
- Delete the feature branch
- Close related issues (if not auto-closed)
- Update documentation if needed
Common Scenarios
Section titled “Common Scenarios”My PR Has Conflicts
Section titled “My PR Has Conflicts”# Update your branchgit fetch upstreamgit rebase upstream/main
# Resolve conflicts in each file# Then continuegit add .git rebase --continue
# Force push (with lease for safety)git push --force-with-leaseI Need to Make Big Changes
Section titled “I Need to Make Big Changes”If review requires major changes:
- Acknowledge the feedback
- Close the current PR
- Create a new branch with changes
- Open a new PR
My PR Is Stale
Section titled “My PR Is Stale”If your PR has been open for a while:
- Rebase on latest main
- Test everything still works
- Ping reviewers
I Want to Split My PR
Section titled “I Want to Split My PR”If a PR is too large:
- Identify logical groupings
- Create separate branches for each
- Submit multiple smaller PRs
- Reference the original PR
PR Size Guidelines
Section titled “PR Size Guidelines”| Size | Lines Changed | Review Time |
|---|---|---|
| Small | < 100 | Same day |
| Medium | 100-300 | 1-2 days |
| Large | 300-500 | 2-3 days |
| XL | > 500 | Consider splitting |
Smaller PRs are:
- Easier to review
- Less likely to have bugs
- Faster to merge
- Easier to revert if needed
Labels
Section titled “Labels”| Label | Meaning |
|---|---|
ready for review | Ready for review |
in progress | Still being worked on |
needs changes | Changes requested |
approved | Approved, ready to merge |
blocked | Blocked by external factor |
CI Checks
Section titled “CI Checks”Every PR runs:
- Build - Ensures project builds
- Lint - Checks code style
- Tests - Runs test suite
- Type Check - TypeScript validation
All checks must pass before merge.
Questions?
Section titled “Questions?”- Tag maintainers in the PR
- Ask in Discord
- Check existing PRs for examples