{"action":"created","comment":{"url":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/comments/42646448","id":42646448,"diff_hunk":"@@ -2,9 +2,123 @@\n \n Please follow these guidelines for contributing to this repository.\n \n+## Branches\n+\n+**Never commit directly to `master`.** Create small branches for *each* topic that you work on\n+(individual features, bug fixes, and so on). When the branch is complete,\n+[create a pull request](https://help.github.com/articles/using-pull-requests/) against `master`.\n+\n+Branches should be *small* and *short-lived*. The goal is to be able to\n+merge back into `master` frequently, so that the team can access your changes,\n+and so that you stay in closer sync with the trunk.\n+\n+Remember to *frequently* [rebase](http://git-scm.com/book/ch3-6.html) your branch,\n+to get the latest changes from `master`. This will give you access to any new\n+features and utilities, plus make merging upstream (much) easier.\n+\n+### Naming\n+\n+Branch names should be:\n+\n+- Descriptive and concise (pithy, even)\n+- All lowercase\n+- Separated by *underscores*\n+\n+| Bad       | Good                |\n+|-----------|---------------------|\n+| `pnx`     | `init_phoenix`      |\n+| `logo`    | `logo_v2`           |\n+| `linter`  | `ci_linter_task`    |\n+| `sockets` | `setup_web_sockets` |\n+| `#42`     | `switch_to_adga`    |\n+\n+### Long-Running & Integration Branches\n+\n+In the edge case that a series of features are tightly coupled, and it is impractical to decouple them:\n+\n+1. Create a long-running \"integration branch\" from `master`\n+2. Branch sub-features from the integration branch\n+  - *Do not commit directly into the long-running branch directly*\n+3. Frequently rebase sub-branches from the integration branch, and the feature branch from `master`\n+4. When the sub-feature is complete, pull request against integration\n+5. When the all coupled features are complete and merged into the integration branch,\n+   pull request the integration branch against `master`\n+\n+It may be helpful to create a checklist in the integration branch's description\n+of the subtasks that belong to it.\n+\n+### Commit Messages\n+\n+Provide a summary message of fewer than 50 characters. If further detail is required,\n+provide a bullet-point list (or paragraph) on the line(s) below.\n+\n ## Pull Requests\n \n-TODO: Explain pull request process.\n+Before a branch gets merged into `master`, it *must* be reviewed by another team member.\n+This has a number of benefits:\n+\n+- Exposes the team to new code\n+  - Keeps everyone in the loop\n+  - Improves the project's [bus factor](https://en.wikipedia.org/wiki/Bus_factor)\n+- Catch bugs early on\n+- Lowers the risk of feature or utility duplication\n+- Style consistency\n+\n+### Titles\n+\n+When creating your Pull Request, provide a short and descriptive title (fewer than 50 characters).\n+These will likely be close to the branch name. Format like a normal sentence.\n+\n+| Bad         | Good                           |\n+|-------------|--------------------------------|\n+| `Quick fix` | `Add User model typespecs`     |\n+| `#42`       | `Reduce Sass deep nesting`     |\n+| `BUTTONS`   | `Update contact buttons to v3` |\n+\n+#### Descriptions\n+\n+To help the reviewer understand what they're reviewing, provide a description of what\n+the code is expected to do. Link to any material, documentation, or resources that\n+may be helpful for context.\n+\n+As a preemptive measure, be sure to mention any gotchas, or areas that may need explanation.\n+\n+#### Link Issues\n+\n+In GitHub, when you mention an Issue in a comment or description, it creates a link to and from the PR.","path":"generators/app/files/CONTRIBUTING.md","position":88,"original_position":88,"commit_id":"c0b2954a016d6a36cb7f5244a275e17b03ee2b9d","original_commit_id":"c0b2954a016d6a36cb7f5244a275e17b03ee2b9d","user":{"login":"expede","id":1052016,"avatar_url":"https://avatars.githubusercontent.com/u/1052016?v=3","gravatar_id":"","url":"https://api.github.com/users/expede","html_url":"https://github.com/expede","followers_url":"https://api.github.com/users/expede/followers","following_url":"https://api.github.com/users/expede/following{/other_user}","gists_url":"https://api.github.com/users/expede/gists{/gist_id}","starred_url":"https://api.github.com/users/expede/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/expede/subscriptions","organizations_url":"https://api.github.com/users/expede/orgs","repos_url":"https://api.github.com/users/expede/repos","events_url":"https://api.github.com/users/expede/events{/privacy}","received_events_url":"https://api.github.com/users/expede/received_events","type":"User","site_admin":false},"body":"GitHub Issues are capitalized, as it's a product\r\n> GitHub’s tracker is called Issues, and has its own section in every repository.\r\n\r\nSo, it depends if we want to talk about \"Issues\" (GitHub), or \"issues\" (general)","created_at":"2015-10-21T16:20:52Z","updated_at":"2015-10-21T16:20:52Z","html_url":"https://github.com/izaakschroeder/generator-contributing/pull/2#discussion_r42646448","pull_request_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/2","_links":{"self":{"href":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/comments/42646448"},"html":{"href":"https://github.com/izaakschroeder/generator-contributing/pull/2#discussion_r42646448"},"pull_request":{"href":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/2"}}},"pull_request":{"url":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/2","id":47731745,"html_url":"https://github.com/izaakschroeder/generator-contributing/pull/2","diff_url":"https://github.com/izaakschroeder/generator-contributing/pull/2.diff","patch_url":"https://github.com/izaakschroeder/generator-contributing/pull/2.patch","issue_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/issues/2","number":2,"state":"open","locked":false,"title":"Add branching section to CONTRIBUTING.md","user":{"login":"expede","id":1052016,"avatar_url":"https://avatars.githubusercontent.com/u/1052016?v=3","gravatar_id":"","url":"https://api.github.com/users/expede","html_url":"https://github.com/expede","followers_url":"https://api.github.com/users/expede/followers","following_url":"https://api.github.com/users/expede/following{/other_user}","gists_url":"https://api.github.com/users/expede/gists{/gist_id}","starred_url":"https://api.github.com/users/expede/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/expede/subscriptions","organizations_url":"https://api.github.com/users/expede/orgs","repos_url":"https://api.github.com/users/expede/repos","events_url":"https://api.github.com/users/expede/events{/privacy}","received_events_url":"https://api.github.com/users/expede/received_events","type":"User","site_admin":false},"body":"Instructions on the branching convention, integration branches, commit messages, and pull request process. Further work could be done to flesh out the commit message guidelines, but I'll leave that for another PR :wink: ","created_at":"2015-10-15T00:23:26Z","updated_at":"2015-10-21T16:20:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0b6412fff0857530397e2de7f8aa6d27beb21a4d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/2/commits","review_comments_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/2/comments","review_comment_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/comments{/number}","comments_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/issues/2/comments","statuses_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/statuses/c0b2954a016d6a36cb7f5244a275e17b03ee2b9d","head":{"label":"expede:branching","ref":"branching","sha":"c0b2954a016d6a36cb7f5244a275e17b03ee2b9d","user":{"login":"expede","id":1052016,"avatar_url":"https://avatars.githubusercontent.com/u/1052016?v=3","gravatar_id":"","url":"https://api.github.com/users/expede","html_url":"https://github.com/expede","followers_url":"https://api.github.com/users/expede/followers","following_url":"https://api.github.com/users/expede/following{/other_user}","gists_url":"https://api.github.com/users/expede/gists{/gist_id}","starred_url":"https://api.github.com/users/expede/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/expede/subscriptions","organizations_url":"https://api.github.com/users/expede/orgs","repos_url":"https://api.github.com/users/expede/repos","events_url":"https://api.github.com/users/expede/events{/privacy}","received_events_url":"https://api.github.com/users/expede/received_events","type":"User","site_admin":false},"repo":{"id":44279795,"name":"generator-contributing","full_name":"expede/generator-contributing","owner":{"login":"expede","id":1052016,"avatar_url":"https://avatars.githubusercontent.com/u/1052016?v=3","gravatar_id":"","url":"https://api.github.com/users/expede","html_url":"https://github.com/expede","followers_url":"https://api.github.com/users/expede/followers","following_url":"https://api.github.com/users/expede/following{/other_user}","gists_url":"https://api.github.com/users/expede/gists{/gist_id}","starred_url":"https://api.github.com/users/expede/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/expede/subscriptions","organizations_url":"https://api.github.com/users/expede/orgs","repos_url":"https://api.github.com/users/expede/repos","events_url":"https://api.github.com/users/expede/events{/privacy}","received_events_url":"https://api.github.com/users/expede/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/expede/generator-contributing","description":"Build contributing guidelines for your repository.","fork":true,"url":"https://api.github.com/repos/expede/generator-contributing","forks_url":"https://api.github.com/repos/expede/generator-contributing/forks","keys_url":"https://api.github.com/repos/expede/generator-contributing/keys{/key_id}","collaborators_url":"https://api.github.com/repos/expede/generator-contributing/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/expede/generator-contributing/teams","hooks_url":"https://api.github.com/repos/expede/generator-contributing/hooks","issue_events_url":"https://api.github.com/repos/expede/generator-contributing/issues/events{/number}","events_url":"https://api.github.com/repos/expede/generator-contributing/events","assignees_url":"https://api.github.com/repos/expede/generator-contributing/assignees{/user}","branches_url":"https://api.github.com/repos/expede/generator-contributing/branches{/branch}","tags_url":"https://api.github.com/repos/expede/generator-contributing/tags","blobs_url":"https://api.github.com/repos/expede/generator-contributing/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/expede/generator-contributing/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/expede/generator-contributing/git/refs{/sha}","trees_url":"https://api.github.com/repos/expede/generator-contributing/git/trees{/sha}","statuses_url":"https://api.github.com/repos/expede/generator-contributing/statuses/{sha}","languages_url":"https://api.github.com/repos/expede/generator-contributing/languages","stargazers_url":"https://api.github.com/repos/expede/generator-contributing/stargazers","contributors_url":"https://api.github.com/repos/expede/generator-contributing/contributors","subscribers_url":"https://api.github.com/repos/expede/generator-contributing/subscribers","subscription_url":"https://api.github.com/repos/expede/generator-contributing/subscription","commits_url":"https://api.github.com/repos/expede/generator-contributing/commits{/sha}","git_commits_url":"https://api.github.com/repos/expede/generator-contributing/git/commits{/sha}","comments_url":"https://api.github.com/repos/expede/generator-contributing/comments{/number}","issue_comment_url":"https://api.github.com/repos/expede/generator-contributing/issues/comments{/number}","contents_url":"https://api.github.com/repos/expede/generator-contributing/contents/{+path}","compare_url":"https://api.github.com/repos/expede/generator-contributing/compare/{base}...{head}","merges_url":"https://api.github.com/repos/expede/generator-contributing/merges","archive_url":"https://api.github.com/repos/expede/generator-contributing/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/expede/generator-contributing/downloads","issues_url":"https://api.github.com/repos/expede/generator-contributing/issues{/number}","pulls_url":"https://api.github.com/repos/expede/generator-contributing/pulls{/number}","milestones_url":"https://api.github.com/repos/expede/generator-contributing/milestones{/number}","notifications_url":"https://api.github.com/repos/expede/generator-contributing/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/expede/generator-contributing/labels{/name}","releases_url":"https://api.github.com/repos/expede/generator-contributing/releases{/id}","created_at":"2015-10-14T22:25:07Z","updated_at":"2015-10-14T22:25:07Z","pushed_at":"2015-10-15T00:20:21Z","git_url":"git://github.com/expede/generator-contributing.git","ssh_url":"git@github.com:expede/generator-contributing.git","clone_url":"https://github.com/expede/generator-contributing.git","svn_url":"https://github.com/expede/generator-contributing","homepage":null,"size":111,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"izaakschroeder:master","ref":"master","sha":"6d7afbceff350d8dfeed8b7c6c88442cfca72363","user":{"login":"izaakschroeder","id":206921,"avatar_url":"https://avatars.githubusercontent.com/u/206921?v=3","gravatar_id":"","url":"https://api.github.com/users/izaakschroeder","html_url":"https://github.com/izaakschroeder","followers_url":"https://api.github.com/users/izaakschroeder/followers","following_url":"https://api.github.com/users/izaakschroeder/following{/other_user}","gists_url":"https://api.github.com/users/izaakschroeder/gists{/gist_id}","starred_url":"https://api.github.com/users/izaakschroeder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/izaakschroeder/subscriptions","organizations_url":"https://api.github.com/users/izaakschroeder/orgs","repos_url":"https://api.github.com/users/izaakschroeder/repos","events_url":"https://api.github.com/users/izaakschroeder/events{/privacy}","received_events_url":"https://api.github.com/users/izaakschroeder/received_events","type":"User","site_admin":false},"repo":{"id":44077908,"name":"generator-contributing","full_name":"izaakschroeder/generator-contributing","owner":{"login":"izaakschroeder","id":206921,"avatar_url":"https://avatars.githubusercontent.com/u/206921?v=3","gravatar_id":"","url":"https://api.github.com/users/izaakschroeder","html_url":"https://github.com/izaakschroeder","followers_url":"https://api.github.com/users/izaakschroeder/followers","following_url":"https://api.github.com/users/izaakschroeder/following{/other_user}","gists_url":"https://api.github.com/users/izaakschroeder/gists{/gist_id}","starred_url":"https://api.github.com/users/izaakschroeder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/izaakschroeder/subscriptions","organizations_url":"https://api.github.com/users/izaakschroeder/orgs","repos_url":"https://api.github.com/users/izaakschroeder/repos","events_url":"https://api.github.com/users/izaakschroeder/events{/privacy}","received_events_url":"https://api.github.com/users/izaakschroeder/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/izaakschroeder/generator-contributing","description":"Build contributing guidelines for your repository.","fork":false,"url":"https://api.github.com/repos/izaakschroeder/generator-contributing","forks_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/forks","keys_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/keys{/key_id}","collaborators_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/teams","hooks_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/hooks","issue_events_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/issues/events{/number}","events_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/events","assignees_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/assignees{/user}","branches_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/branches{/branch}","tags_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/tags","blobs_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/git/refs{/sha}","trees_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/git/trees{/sha}","statuses_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/statuses/{sha}","languages_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/languages","stargazers_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/stargazers","contributors_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/contributors","subscribers_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/subscribers","subscription_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/subscription","commits_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/commits{/sha}","git_commits_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/git/commits{/sha}","comments_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/comments{/number}","issue_comment_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/issues/comments{/number}","contents_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/contents/{+path}","compare_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/compare/{base}...{head}","merges_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/merges","archive_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/downloads","issues_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/issues{/number}","pulls_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls{/number}","milestones_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/milestones{/number}","notifications_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/labels{/name}","releases_url":"https://api.github.com/repos/izaakschroeder/generator-contributing/releases{/id}","created_at":"2015-10-12T01:41:57Z","updated_at":"2015-10-12T01:42:10Z","pushed_at":"2015-10-15T00:23:27Z","git_url":"git://github.com/izaakschroeder/generator-contributing.git","ssh_url":"git@github.com:izaakschroeder/generator-contributing.git","clone_url":"https://github.com/izaakschroeder/generator-contributing.git","svn_url":"https://github.com/izaakschroeder/generator-contributing","homepage":null,"size":146,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":1,"forks":1,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/2"},"html":{"href":"https://github.com/izaakschroeder/generator-contributing/pull/2"},"issue":{"href":"https://api.github.com/repos/izaakschroeder/generator-contributing/issues/2"},"comments":{"href":"https://api.github.com/repos/izaakschroeder/generator-contributing/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/izaakschroeder/generator-contributing/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/izaakschroeder/generator-contributing/statuses/c0b2954a016d6a36cb7f5244a275e17b03ee2b9d"}}}}