summary refs log tree commit diff
path: root/third_party/go/git-appraise/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/go/git-appraise/README.md')
-rw-r--r--third_party/go/git-appraise/README.md158
1 files changed, 158 insertions, 0 deletions
diff --git a/third_party/go/git-appraise/README.md b/third_party/go/git-appraise/README.md
new file mode 100644
index 000000000000..0227c41366e0
--- /dev/null
+++ b/third_party/go/git-appraise/README.md
@@ -0,0 +1,158 @@
+# Distributed Code Review For Git
+[![Build Status](https://travis-ci.org/google/git-appraise.svg?branch=master)](https://travis-ci.org/google/git-appraise)
+
+This repo contains a command line tool for performing 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](https://golang.org/doc/install), run
+the following command:
+
+    go get github.com/google/git-appraise/git-appraise
+
+Then, either make sure that `${GOPATH}/bin` is in your PATH, or explicitly add the
+"appraise" git alias by running the following command.
+
+    git config --global alias.appraise '!'"${GOPATH}/bin/git-appraise"
+
+#### Windows:
+
+    git config --global alias.appraise "!%GOPATH%/bin/git-appraise.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 appraise request
+
+Pushing code reviews to a remote:
+
+    git appraise push [<remote>]
+
+Pulling code reviews from a remote:
+
+    git appraise pull [<remote>]
+
+Listing open code reviews:
+
+    git appraise list
+
+Showing the status of the current review, including comments:
+
+    git appraise show
+
+Showing the diff of a review:
+
+    git appraise show --diff [--diff-opts "<diff-options>"] [<review-hash>]
+
+Commenting on a review:
+
+    git appraise comment -m "<message>" [-f <file> [-l <line>]] [<review-hash>]
+
+Accepting the changes in a review:
+
+    git appraise accept [-m "<message>"] [<review-hash>]
+
+Submitting the current review:
+
+    git appraise submit [--merge | --rebase]
+
+A more detailed getting started doc is available [here](docs/tutorial.md).
+
+## Metadata
+
+The code review data is stored in [git-notes](https://git-scm.com/docs/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](schema/request.json).
+
+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 appraise 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](schema/ci.json).
+
+### 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](schema/analysis.json).
+
+### 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](schema/comment.json).
+
+## Integrations
+
+### Libraries
+
+  - [Go (use git-appraise itself)](https://github.com/google/git-appraise/blob/master/review/review.go)
+  - [Rust](https://github.com/Nemo157/git-appraise-rs)
+
+### Graphical User Interfaces
+
+  - [Git-Appraise-Web](https://github.com/google/git-appraise-web)
+
+### Plugins
+
+  - [Eclipse](https://github.com/google/git-appraise-eclipse)
+  - [Jenkins](https://github.com/jenkinsci/google-git-notes-publisher-plugin)
+
+### Mirrors to other systems
+
+  - [GitHub Pull Requests](https://github.com/google/git-pull-request-mirror)
+  - [Phabricator Revisions](https://github.com/google/git-phabricator-mirror)
+
+## Contributing
+
+Please see [the CONTRIBUTING file](CONTRIBUTING.md) for information on contributing to Git Appraise.