git-review

module
v0.0.0-...-413351d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 9, 2020 License: Apache-2.0

README

git review

Distributed Code Review For Git.

This repo contains a command line tool for performing distributed code reviews on git repositories.

Overview

This tool is a distributed code review system for git repos.

By "distributed", we mean that code reviews are stored inside of the repository as git objects. Every developer on your team has their own copy of the review history that they can push or pull. When pulling, updates from the remote repo are automatically merged by the tool.

This design removes the need for any sort of server-side setup. As a result, this tool can work with any git hosting provider, and the only setup required is installing the client on your workstation.

Installation

Assuming you have the Go tools installed, run the following command:

go get github.com/ajzaff/git-review/git-review

Then, either make sure that ${GOPATH}/bin is in your PATH, or explicitly add the "review" git alias by running the following command.

git config --global alias.review '!'"${GOPATH}/bin/git-review"
Windows:
git config --global alias.review "!%GOPATH%/bin/git-review.exe"

Requirements

This tool expects to run in an environment with the following attributes:

  1. The git command line tool is installed, and included in the PATH.
  2. The tool is run from within a git repo.
  3. The git command line tool is configured with the credentials it needs to push to and pull from the remote repos.

Usage

Requesting a code review:

git review request

Pushing code reviews to a remote:

git review push [<remote>]

Pulling code reviews from a remote:

git review pull [<remote>]

Listing open code reviews:

git review list

Showing the status of the current review, including comments:

git review show

Showing the diff of a review:

git review show --diff [--diff-opts "<diff-options>"] [<review-hash>]

Commenting on a review:

git review comment -m "<message>" [-f <file> [-l <line>]] [<review-hash>]

Accepting the changes in a review:

git review accept [-m "<message>"] [<review-hash>]

Submitting the current review:

git review submit [--merge | --rebase]

A more detailed getting started doc is available here.

Metadata

The code review data is stored in git-notes, using the formats described below. Each item stored is written as a single line of JSON, and is written with at most one such item per line. This allows the git notes to be automatically merged using the "cat_sort_uniq" strategy.

Since these notes are not in a human-friendly form, all of the refs used to track them start with the prefix "refs/notes/devtools". This helps make it clear that these are meant to be read and written by automated tools.

When a field named "v" appears in one of these notes, it is used to denote the version of the metadata format being used. If that field is missing, then it defaults to the value 0, which corresponds to this initial version of the formats.

Code Review Requests

Code review requests are stored in the "refs/notes/devtools/reviews" ref, and annotate the first revision in a review. They must conform to the request schema.

If there are multiple requests for a single commit, then they are sorted by timestamp and the final request is treated as the current one. This sorting should be done in a stable manner, so that if there are multiple requests with the same timestamp, then the last such request in the note is treated as the current one.

This design allows a user to update a review request by re-running the git review request command.

Continuous Integration Status

Continuous integration build and test results are stored in the "refs/notes/devtools/ci" ref, and annotate the revision that was built and tested. They must conform to the ci schema.

Robot Comments

Robot comments are comments generated by static analysis tools. These are stored in the "refs/notes/devtools/analyses" ref, and annotate the revision. They must conform to the analysis schema.

Review Comments

Review comments are comments that were written by a person rather than by a machine. These are stored in the "refs/notes/devtools/discuss" ref, and annotate the first revision in the review. They must conform to the comment schema.

Integrations

Libraries
Graphical User Interfaces
Plugins
Mirrors to other systems

Contributing

Please see the CONTRIBUTING file for information on contributing to Git review.

Directories

Path Synopsis
Package commands contains the assorted sub commands supported by the git-review tool.
Package commands contains the assorted sub commands supported by the git-review tool.
output
Package output contains helper methods for pretty-printing code reviews.
Package output contains helper methods for pretty-printing code reviews.
Command git-review manages code reviews stored as git-notes in the source repo.
Command git-review manages code reviews stored as git-notes in the source repo.
Package repository contains helper methods for working with the Git repo.
Package repository contains helper methods for working with the Git repo.
Package review contains the data structures used to represent code reviews.
Package review contains the data structures used to represent code reviews.
analyses
Package analyses defines the internal representation of static analysis reports.
Package analyses defines the internal representation of static analysis reports.
ci
Package ci defines the internal representation of a continuous integration reports.
Package ci defines the internal representation of a continuous integration reports.
comment
Package comment defines the internal representation of a review comment.
Package comment defines the internal representation of a review comment.
gpg
Package gpg provides an interface and an abstraction with which to sign and verify review requests and comments.
Package gpg provides an interface and an abstraction with which to sign and verify review requests and comments.
request
Package request defines the internal representation of a review request.
Package request defines the internal representation of a review request.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL