{"action":"created","comment":{"url":"https://api.github.com/repos/18F/cg-docs/pulls/comments/51825339","id":51825339,"diff_hunk":"@@ -0,0 +1,58 @@\n+---\n+menu:\n+  main:\n+    parent: operations\n+title: Code Review\n+---\n+\n+This document describes how the 18F cloud.gov team has agreed to work together\n+with regard to Git, Github and facilitating changes to the repositories they administer.\n+\n+## Workflow\n+\n+The most common workflow is:\n+\n+1. A change is initiatied and discussed via a [Trello card](https://trello.com/b/ChGzyepo/paas-dev).\n+1. A Pull Request (PR) is created on Github.\n+1. The PR is reviewed by someone other than the committer. Pairing via screen-sharing\n+is encouraged and qualifies as a review.\n+1. The reviewer merges the PR.\n+\n+## Forking vs Branching\n+\n+The team prefers forking.\n+\n+The master branch on the canonical repository is what gets deployed to production.\n+If there is a staging environment available for a given repository, the PR should be\n+created against the staging branch. Otherwise, the PR should be created against the master\n+branch on the canonical repository.\n+\n+The rationale for preferring forking is that all contributors work the same way,\n+regardless of whether or not they may commit directly to the canonical repository.\n+\n+## Squashing commits\n+\n+[Squashing commits](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Squashing-Commits)\n+is allowed but discouraged, except in rare instances.\n+\n+## Rebase or Merge\n+\n+The team prefers [rebasing over merging](https://www.atlassian.com/git/tutorials/merging-vs-rebasing/).\n+\n+## When should a PR be created?\n+\n+Work-in-progress PRs are allowed. When a PR is ready for review, it should be tagged in Github\n+with the `review-needed` label. If you create a work-in-progress PR, you might also make it plain\n+in the PR name with a `[WIP]` prefix.","path":"content/ops/code-review.md","position":46,"original_position":46,"commit_id":"a232ad61ee1a6d3c9976346a578b918ca1b19186","original_commit_id":"a232ad61ee1a6d3c9976346a578b918ca1b19186","user":{"login":"LinuxBozo","id":723420,"avatar_url":"https://avatars.githubusercontent.com/u/723420?v=3","gravatar_id":"","url":"https://api.github.com/users/LinuxBozo","html_url":"https://github.com/LinuxBozo","followers_url":"https://api.github.com/users/LinuxBozo/followers","following_url":"https://api.github.com/users/LinuxBozo/following{/other_user}","gists_url":"https://api.github.com/users/LinuxBozo/gists{/gist_id}","starred_url":"https://api.github.com/users/LinuxBozo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LinuxBozo/subscriptions","organizations_url":"https://api.github.com/users/LinuxBozo/orgs","repos_url":"https://api.github.com/users/LinuxBozo/repos","events_url":"https://api.github.com/users/LinuxBozo/events{/privacy}","received_events_url":"https://api.github.com/users/LinuxBozo/received_events","type":"User","site_admin":false},"body":"My original opposition with WIP type requests is the confusion over when is something \"done\". We've solved that with `review-needed` tagging.","created_at":"2016-02-04T03:30:27Z","updated_at":"2016-02-04T03:30:27Z","html_url":"https://github.com/18F/cg-docs/pull/210#discussion_r51825339","pull_request_url":"https://api.github.com/repos/18F/cg-docs/pulls/210","_links":{"self":{"href":"https://api.github.com/repos/18F/cg-docs/pulls/comments/51825339"},"html":{"href":"https://github.com/18F/cg-docs/pull/210#discussion_r51825339"},"pull_request":{"href":"https://api.github.com/repos/18F/cg-docs/pulls/210"}}},"pull_request":{"url":"https://api.github.com/repos/18F/cg-docs/pulls/210","id":58214128,"html_url":"https://github.com/18F/cg-docs/pull/210","diff_url":"https://github.com/18F/cg-docs/pull/210.diff","patch_url":"https://github.com/18F/cg-docs/pull/210.patch","issue_url":"https://api.github.com/repos/18F/cg-docs/issues/210","number":210,"state":"open","locked":false,"title":"add team practices document based on group conversation","user":{"login":"pkarman","id":1205061,"avatar_url":"https://avatars.githubusercontent.com/u/1205061?v=3","gravatar_id":"","url":"https://api.github.com/users/pkarman","html_url":"https://github.com/pkarman","followers_url":"https://api.github.com/users/pkarman/followers","following_url":"https://api.github.com/users/pkarman/following{/other_user}","gists_url":"https://api.github.com/users/pkarman/gists{/gist_id}","starred_url":"https://api.github.com/users/pkarman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pkarman/subscriptions","organizations_url":"https://api.github.com/users/pkarman/orgs","repos_url":"https://api.github.com/users/pkarman/repos","events_url":"https://api.github.com/users/pkarman/events{/privacy}","received_events_url":"https://api.github.com/users/pkarman/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-02-03T22:49:34Z","updated_at":"2016-02-04T03:30:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"86564b331d9c2b1f900548c24689ef4ce71d1bef","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/18F/cg-docs/pulls/210/commits","review_comments_url":"https://api.github.com/repos/18F/cg-docs/pulls/210/comments","review_comment_url":"https://api.github.com/repos/18F/cg-docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/18F/cg-docs/issues/210/comments","statuses_url":"https://api.github.com/repos/18F/cg-docs/statuses/a232ad61ee1a6d3c9976346a578b918ca1b19186","head":{"label":"pkarman:code-review-team-practices","ref":"code-review-team-practices","sha":"a232ad61ee1a6d3c9976346a578b918ca1b19186","user":{"login":"pkarman","id":1205061,"avatar_url":"https://avatars.githubusercontent.com/u/1205061?v=3","gravatar_id":"","url":"https://api.github.com/users/pkarman","html_url":"https://github.com/pkarman","followers_url":"https://api.github.com/users/pkarman/followers","following_url":"https://api.github.com/users/pkarman/following{/other_user}","gists_url":"https://api.github.com/users/pkarman/gists{/gist_id}","starred_url":"https://api.github.com/users/pkarman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pkarman/subscriptions","organizations_url":"https://api.github.com/users/pkarman/orgs","repos_url":"https://api.github.com/users/pkarman/repos","events_url":"https://api.github.com/users/pkarman/events{/privacy}","received_events_url":"https://api.github.com/users/pkarman/received_events","type":"User","site_admin":false},"repo":{"id":51033905,"name":"cg-docs","full_name":"pkarman/cg-docs","owner":{"login":"pkarman","id":1205061,"avatar_url":"https://avatars.githubusercontent.com/u/1205061?v=3","gravatar_id":"","url":"https://api.github.com/users/pkarman","html_url":"https://github.com/pkarman","followers_url":"https://api.github.com/users/pkarman/followers","following_url":"https://api.github.com/users/pkarman/following{/other_user}","gists_url":"https://api.github.com/users/pkarman/gists{/gist_id}","starred_url":"https://api.github.com/users/pkarman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pkarman/subscriptions","organizations_url":"https://api.github.com/users/pkarman/orgs","repos_url":"https://api.github.com/users/pkarman/repos","events_url":"https://api.github.com/users/pkarman/events{/privacy}","received_events_url":"https://api.github.com/users/pkarman/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pkarman/cg-docs","description":"Documentation site for cloud.gov Cloud Foundry","fork":true,"url":"https://api.github.com/repos/pkarman/cg-docs","forks_url":"https://api.github.com/repos/pkarman/cg-docs/forks","keys_url":"https://api.github.com/repos/pkarman/cg-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pkarman/cg-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pkarman/cg-docs/teams","hooks_url":"https://api.github.com/repos/pkarman/cg-docs/hooks","issue_events_url":"https://api.github.com/repos/pkarman/cg-docs/issues/events{/number}","events_url":"https://api.github.com/repos/pkarman/cg-docs/events","assignees_url":"https://api.github.com/repos/pkarman/cg-docs/assignees{/user}","branches_url":"https://api.github.com/repos/pkarman/cg-docs/branches{/branch}","tags_url":"https://api.github.com/repos/pkarman/cg-docs/tags","blobs_url":"https://api.github.com/repos/pkarman/cg-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pkarman/cg-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pkarman/cg-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/pkarman/cg-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pkarman/cg-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/pkarman/cg-docs/languages","stargazers_url":"https://api.github.com/repos/pkarman/cg-docs/stargazers","contributors_url":"https://api.github.com/repos/pkarman/cg-docs/contributors","subscribers_url":"https://api.github.com/repos/pkarman/cg-docs/subscribers","subscription_url":"https://api.github.com/repos/pkarman/cg-docs/subscription","commits_url":"https://api.github.com/repos/pkarman/cg-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/pkarman/cg-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/pkarman/cg-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/pkarman/cg-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/pkarman/cg-docs/contents/{+path}","compare_url":"https://api.github.com/repos/pkarman/cg-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pkarman/cg-docs/merges","archive_url":"https://api.github.com/repos/pkarman/cg-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pkarman/cg-docs/downloads","issues_url":"https://api.github.com/repos/pkarman/cg-docs/issues{/number}","pulls_url":"https://api.github.com/repos/pkarman/cg-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/pkarman/cg-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/pkarman/cg-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pkarman/cg-docs/labels{/name}","releases_url":"https://api.github.com/repos/pkarman/cg-docs/releases{/id}","deployments_url":"https://api.github.com/repos/pkarman/cg-docs/deployments","created_at":"2016-02-03T22:03:38Z","updated_at":"2016-02-03T22:03:39Z","pushed_at":"2016-02-04T02:51:46Z","git_url":"git://github.com/pkarman/cg-docs.git","ssh_url":"git@github.com:pkarman/cg-docs.git","clone_url":"https://github.com/pkarman/cg-docs.git","svn_url":"https://github.com/pkarman/cg-docs","homepage":"https://docs.cloud.gov","size":17504,"stargazers_count":0,"watchers_count":0,"language":"CSS","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"18F:master","ref":"master","sha":"bd88962d71ae12dce10762b8cf932b973059cf92","user":{"login":"18F","id":6233994,"avatar_url":"https://avatars.githubusercontent.com/u/6233994?v=3","gravatar_id":"","url":"https://api.github.com/users/18F","html_url":"https://github.com/18F","followers_url":"https://api.github.com/users/18F/followers","following_url":"https://api.github.com/users/18F/following{/other_user}","gists_url":"https://api.github.com/users/18F/gists{/gist_id}","starred_url":"https://api.github.com/users/18F/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/18F/subscriptions","organizations_url":"https://api.github.com/users/18F/orgs","repos_url":"https://api.github.com/users/18F/repos","events_url":"https://api.github.com/users/18F/events{/privacy}","received_events_url":"https://api.github.com/users/18F/received_events","type":"Organization","site_admin":false},"repo":{"id":29991068,"name":"cg-docs","full_name":"18F/cg-docs","owner":{"login":"18F","id":6233994,"avatar_url":"https://avatars.githubusercontent.com/u/6233994?v=3","gravatar_id":"","url":"https://api.github.com/users/18F","html_url":"https://github.com/18F","followers_url":"https://api.github.com/users/18F/followers","following_url":"https://api.github.com/users/18F/following{/other_user}","gists_url":"https://api.github.com/users/18F/gists{/gist_id}","starred_url":"https://api.github.com/users/18F/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/18F/subscriptions","organizations_url":"https://api.github.com/users/18F/orgs","repos_url":"https://api.github.com/users/18F/repos","events_url":"https://api.github.com/users/18F/events{/privacy}","received_events_url":"https://api.github.com/users/18F/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/18F/cg-docs","description":"Documentation site for cloud.gov Cloud Foundry","fork":false,"url":"https://api.github.com/repos/18F/cg-docs","forks_url":"https://api.github.com/repos/18F/cg-docs/forks","keys_url":"https://api.github.com/repos/18F/cg-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/18F/cg-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/18F/cg-docs/teams","hooks_url":"https://api.github.com/repos/18F/cg-docs/hooks","issue_events_url":"https://api.github.com/repos/18F/cg-docs/issues/events{/number}","events_url":"https://api.github.com/repos/18F/cg-docs/events","assignees_url":"https://api.github.com/repos/18F/cg-docs/assignees{/user}","branches_url":"https://api.github.com/repos/18F/cg-docs/branches{/branch}","tags_url":"https://api.github.com/repos/18F/cg-docs/tags","blobs_url":"https://api.github.com/repos/18F/cg-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/18F/cg-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/18F/cg-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/18F/cg-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/18F/cg-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/18F/cg-docs/languages","stargazers_url":"https://api.github.com/repos/18F/cg-docs/stargazers","contributors_url":"https://api.github.com/repos/18F/cg-docs/contributors","subscribers_url":"https://api.github.com/repos/18F/cg-docs/subscribers","subscription_url":"https://api.github.com/repos/18F/cg-docs/subscription","commits_url":"https://api.github.com/repos/18F/cg-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/18F/cg-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/18F/cg-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/18F/cg-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/18F/cg-docs/contents/{+path}","compare_url":"https://api.github.com/repos/18F/cg-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/18F/cg-docs/merges","archive_url":"https://api.github.com/repos/18F/cg-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/18F/cg-docs/downloads","issues_url":"https://api.github.com/repos/18F/cg-docs/issues{/number}","pulls_url":"https://api.github.com/repos/18F/cg-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/18F/cg-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/18F/cg-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/18F/cg-docs/labels{/name}","releases_url":"https://api.github.com/repos/18F/cg-docs/releases{/id}","deployments_url":"https://api.github.com/repos/18F/cg-docs/deployments","created_at":"2015-01-28T22:15:24Z","updated_at":"2016-01-21T21:17:40Z","pushed_at":"2016-02-03T22:49:34Z","git_url":"git://github.com/18F/cg-docs.git","ssh_url":"git@github.com:18F/cg-docs.git","clone_url":"https://github.com/18F/cg-docs.git","svn_url":"https://github.com/18F/cg-docs","homepage":"https://docs.cloud.gov","size":17523,"stargazers_count":12,"watchers_count":12,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":14,"mirror_url":null,"open_issues_count":20,"forks":14,"open_issues":20,"watchers":12,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/18F/cg-docs/pulls/210"},"html":{"href":"https://github.com/18F/cg-docs/pull/210"},"issue":{"href":"https://api.github.com/repos/18F/cg-docs/issues/210"},"comments":{"href":"https://api.github.com/repos/18F/cg-docs/issues/210/comments"},"review_comments":{"href":"https://api.github.com/repos/18F/cg-docs/pulls/210/comments"},"review_comment":{"href":"https://api.github.com/repos/18F/cg-docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/18F/cg-docs/pulls/210/commits"},"statuses":{"href":"https://api.github.com/repos/18F/cg-docs/statuses/a232ad61ee1a6d3c9976346a578b918ca1b19186"}}}}