Work with Gerrit code review using git-review CLI. Use when submitting changes, downloading patches, and managing code reviews in Gerrit.
Resources
2Install
npx skillscat add odyssey4me/agent-skills/gerrit Install via the SkillsCat registry.
Gerrit Skill
This skill provides Gerrit code review integration using git-review with a Python wrapper for markdown-formatted query output on read/view operations. Action commands (submit, review, abandon) should use git-review or SSH commands directly.
Prerequisites
Install git-review: https://docs.opendev.org/opendev/git-review/latest/installation.html
Quick install:
# Using pip (recommended)
pip install git-review
# macOS
brew install git-review
# Debian/Ubuntu
sudo apt install git-review
# Fedora/RHEL/CentOS
sudo dnf install git-reviewAuthentication
git-review uses SSH for authentication with Gerrit servers.
# Configure Gerrit username (if different from local user)
git config --global gitreview.username yourgerrituser
# Test SSH connection
ssh -p 29418 youruser@review.example.com gerrit version
# Add SSH key to Gerrit
# 1. Generate SSH key if needed: ssh-keygen -t ed25519
# 2. Copy public key: cat ~/.ssh/id_ed25519.pub
# 3. Add to Gerrit: Settings > SSH KeysGerrit supports multiple authentication methods:
- SSH (recommended): Used by git-review for all operations
- HTTP/HTTPS: For web UI and REST API access (set password in Settings > HTTP Password)
See Gerrit Authentication for details.
Initial Setup
Configure Repository
# One-time setup for a repository
git review -s
# Or manually create .gitreview file in repository root
cat > .gitreview <<EOF
[gerrit]
host=review.example.com
port=29418
project=myproject
defaultbranch=main
EOFSee Installation Guide for details.
Script Usage
The wrapper script (scripts/gerrit.py) uses Gerrit SSH query commands and formats output as markdown. Connection details are read from .gitreview or provided via --host/--port/--username flags.
# Check Gerrit SSH access
python scripts/gerrit.py check
# Changes
python scripts/gerrit.py changes list
python scripts/gerrit.py changes view 12345
python scripts/gerrit.py changes search "status:open project:myproject"
# Projects
python scripts/gerrit.py projects listAll commands support --limit N for list commands (default 30).
Global connection options: --host, --port (default 29418), --username.
Commands (Direct git-review Usage)
For action commands, use git-review or SSH commands directly:
Submitting Changes
git review # Submit current branch for review
git review -t topic-name # Submit with topic
git review -f # Submit and close local branch
git review --reviewers user1,user2 # Add reviewers
git review -n # Dry-run (show what would be done)Full reference: git-review usage
Downloading Changes
git review -d 12345 # Download change 12345
git review -d 12345,3 # Download patchset 3 of change 12345
git review -x 12345 # Cherry-pick change (no branch)
git review -m 12345 # Compare local changes to remoteDownloads create a local branch named review/username/topic.
Updating Changes
# Make changes to downloaded review
git commit --amend
git review # Upload new patchset
# Update to latest patchset
git review -d 12345 # Re-download updates the branchAdvanced Options
git review -R # Don't rebase (submit as-is)
git review -D # Draft mode (WIP changes)
git review --no-cache # Skip local cache
git review -v # Verbose output
git review --track # Track remote branchConfiguration
Per-Repository Settings
File: .gitreview (repository root)
[gerrit]
host=review.example.com
port=29418
project=myproject/subproject
defaultbranch=main
defaultremote=originGlobal Settings
# Set Gerrit username
git config --global gitreview.username myuser
# Set default remote
git config --global gitreview.remote gerrit
# Configure scheme (ssh/http/https)
git config --global gitreview.scheme sshConfiguration stored in ~/.gitconfig
Examples
Daily Workflow
# Start work on new feature
git checkout -b feature-branch
# ... make changes ...
git commit -m "Add new feature"
# Submit for review
git review -t feature-topic
# Address review comments
# ... make changes ...
git commit --amend
git reviewReviewing Others' Changes
# Download change for review
git review -d 12345
# Test the change
# ... run tests, verify code ...
# Return to main branch
git checkout main
git branch -D review/user/topicWorking with Topics
# Submit with topic
git review -t authentication-refactor
# All related changes will be grouped under this topic
git commit -m "Part 2: Update tests"
git review -t authentication-refactorSee common-workflows.md for more examples.
Advanced Usage
SSH Commands
For operations not covered by git-review:
# Query open changes
ssh -p 29418 review.example.com gerrit query status:open project:myproject
# Query specific change
ssh -p 29418 review.example.com gerrit query change:12345
# Review from command line
ssh -p 29418 review.example.com gerrit review 12345,3 --verified +1 --message "'Looks good'"
# Abandon change
ssh -p 29418 review.example.com gerrit review 12345 --abandonFull reference: Gerrit SSH Commands
JSON Output for Scripting
# Get change info as JSON
ssh -p 29418 review.example.com gerrit query --format=JSON change:12345
# Process with jq
ssh -p 29418 review.example.com gerrit query --format=JSON status:open | jq '.subject'Multiple Gerrit Servers
# Set remote for specific server
git config gitreview.remote gerrit-prod
# Or specify via command line
git review -r gerrit-stagingModel Guidance
This skill wraps an official CLI. A fast, lightweight model is sufficient.
Troubleshooting
# Re-run setup
git review -s
# Force setup (fixes common issues)
git review -s --force
# Verbose output for debugging
git review -v
# Check configuration
cat .gitreview
git config -l | grep gitreview
# Test SSH connection
ssh -p 29418 youruser@review.example.com gerrit versionCommon Issues
"We don't know where your gerrit is"
git review -s # Run setup
# Or create .gitreview file manually"fatal: 'gerrit' does not appear to be a git repository"
git review -s # Setup remote
git remote -v # Verify gerrit remote exists"Permission denied (publickey)"
# Add SSH key to Gerrit (Settings > SSH Keys)
# Or configure username:
git config --global gitreview.username youruserChange-Id missing
# Install commit-msg hook
curl -Lo .git/hooks/commit-msg \
https://review.example.com/tools/hooks/commit-msg
chmod u+x .git/hooks/commit-msg
# Or let git-review install it
git review -sOfficial Documentation
- git-review Manual: https://docs.opendev.org/opendev/git-review/latest/
- git-review Repository: https://opendev.org/opendev/git-review
- Gerrit Documentation: https://gerrit-review.googlesource.com/Documentation/
- Gerrit SSH Commands: https://gerrit-review.googlesource.com/Documentation/cmd-index.html
Summary
The Gerrit skill uses git-review with a Python wrapper for markdown-formatted query output on read/view operations.
Quick start:
- Install:
pip install git-review - Setup:
git review -s(in repository) - Verify:
python scripts/gerrit.py check - Read:
python scripts/gerrit.py changes list - Write:
git review,git review -d 12345, etc. (usegit-reviewdirectly)
For detailed command reference, use git review --help or visit https://docs.opendev.org/opendev/git-review/latest/.