{"action":"created","comment":{"url":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/comments/31175691","id":31175691,"diff_hunk":"@@ -0,0 +1,318 @@\n+# On boarding guide to git flow used by Valor Software\n+\n+## Overview\n+\n+Most important thing you should take from this guide is an understanding that `git`, `Github` and `gitflow` is only a `tools` to achieve your/project goals!\n+  Goal of this guide is to explain `gitflow`, show pros and cons of this approach, and how to prevent possible issues.\n+\n+### Meaning\n+\n+So the very important thing is to understand main concepts:\n+- `feature` - is a complete peace of functionality, it could be a new feature, hotfix, doc, test, refactoring, etc...\n+- `branches` - should serve to separate your work by type of goals you want to achieve or to react on issues in production, like `hotfixes`, with corresponding flows and actions\n+- `pull request` - is designed to share the knowledge of what you done with team, to take in count code review comments as a source of knowledge sharing,  and last and not least is to check that you did not forgot to add anything :)\n+\n+### Pros and cons\n+\n+Gitflow is a way to develop things in a team and has it strong and weak parts.\n+\n+#### Pros:\n+* separation of concepts - each branch has clear purpose and flow how to work with it\n+* confidence - at any given point of time `master` and `release` branches are stable and ready for production\n+* isolation - you develop independent and isolated feature, so you can focus on problem\n+* continuous processes - continuous deployment and testing for feature branches, continuous integration for `master` branch\n+* code review - pull request allows to increase code quality and knowledge rotation in team, and as a consequence reduce \"bus factor\"\n+\n+#### Cons:\n+* \"scary merge\" - well illustrated problem by Fowler, to avoid it keep semantic changes as separate branches(explained later)\n+* \"afraid of refactoring\" - semantic changes(refacroring, renaming) leads to \"scary merges\", so try to do it when code targeted by refactoring is not changed by any other branches\n+* dependencies(libraries) update - makes Pull Requests view polluted by library files and in general useless, so keep this updates as a separate branches\n+\n+##Table of contents\n+1. Required reading\n+2. Branches\n+3. Environments\n+4. Branch name conventions\n+5. Pull Requests\n+6. Commit and Pull Requests message guideline\n+7. Initiate repository with main branches\n+8. Feature branches flow\n+9. Hotfix branches flow\n+10. Release branches flow\n+\n+## Required readings\n+\n+Take attention to Feature Branching with Pull Requests\n+\n+1. [Try github](https://try.github.io/levels/1/challenges/1)\n+2. [Atlassian git tutorial](https://www.atlassian.com/git/tutorials/setting-up-a-repository/ ) (except Migrate to Git from SVN)\n+3. [Feature branching classic by Martin Fowler](http://martinfowler.com/bliki/FeatureBranch.html)\n+4. [Closest to ours branching model by Vincent Driessen](http://nvie.com/posts/a-successful-git-branching-model/)\n+5. [Vincent Driessen git-flow cheatsheet](http://danielkummer.github.io/git-flow-cheatsheet/)\n+([ru](http://danielkummer.github.io/git-flow-cheatsheet/index.ru_RU.html))\n+\n+### Supporting readings\n+\n+1. [Semantic Versioning 2.0.0](http://semver.org/)\n+2. [Git cheat sheet](https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf)\n+3. [Github help: user collaborating](https://help.github.com/categories/collaborating/)\n+\n+## Branches\n+\n+- `master` - always **stable** and **release ready** branch\n+- `development` - default branch, contains latest **features** and **fixes**\n+- `feature-*` - branches for feature development and decencies update\n+- `realese-*` - branches for release(production) version\n+- `hotfix-*` - branches for release `fixes`\n+- `refactor-*` - branches for semantic changes\n+\n+## Environments\n+\n+- `master` - production\n+- `development` - staging\n+- `release-*` - for history reasons or supporting several versions at production","path":"gitflow/readme.md","position":73,"original_position":73,"commit_id":"a738ad6314a1b5844b3c2a0faf87083d9d6e5f1b","original_commit_id":"a738ad6314a1b5844b3c2a0faf87083d9d6e5f1b","user":{"login":"korel-san","id":946369,"avatar_url":"https://avatars.githubusercontent.com/u/946369?v=3","gravatar_id":"","url":"https://api.github.com/users/korel-san","html_url":"https://github.com/korel-san","followers_url":"https://api.github.com/users/korel-san/followers","following_url":"https://api.github.com/users/korel-san/following{/other_user}","gists_url":"https://api.github.com/users/korel-san/gists{/gist_id}","starred_url":"https://api.github.com/users/korel-san/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/korel-san/subscriptions","organizations_url":"https://api.github.com/users/korel-san/orgs","repos_url":"https://api.github.com/users/korel-san/repos","events_url":"https://api.github.com/users/korel-san/events{/privacy}","received_events_url":"https://api.github.com/users/korel-san/received_events","type":"User","site_admin":false},"body":"@valorkin in this case it would be better to use tags. As far as i remember, release branch is used by staging before deploy on master, after deploying it should be removed. Finally, the latest development should be on staging so far as new release branch wouldn't be created","created_at":"2015-05-27T20:19:51Z","updated_at":"2015-05-27T20:19:51Z","html_url":"https://github.com/valor-software/valor-style-guides/pull/9#discussion_r31175691","pull_request_url":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/9","_links":{"self":{"href":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/comments/31175691"},"html":{"href":"https://github.com/valor-software/valor-style-guides/pull/9#discussion_r31175691"},"pull_request":{"href":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/9"}}},"pull_request":{"url":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/9","id":36145793,"html_url":"https://github.com/valor-software/valor-style-guides/pull/9","diff_url":"https://github.com/valor-software/valor-style-guides/pull/9.diff","patch_url":"https://github.com/valor-software/valor-style-guides/pull/9.patch","issue_url":"https://api.github.com/repos/valor-software/valor-style-guides/issues/9","number":9,"state":"open","locked":false,"title":"New: Branch flow documentation","user":{"login":"valorkin","id":1107171,"avatar_url":"https://avatars.githubusercontent.com/u/1107171?v=3","gravatar_id":"","url":"https://api.github.com/users/valorkin","html_url":"https://github.com/valorkin","followers_url":"https://api.github.com/users/valorkin/followers","following_url":"https://api.github.com/users/valorkin/following{/other_user}","gists_url":"https://api.github.com/users/valorkin/gists{/gist_id}","starred_url":"https://api.github.com/users/valorkin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/valorkin/subscriptions","organizations_url":"https://api.github.com/users/valorkin/orgs","repos_url":"https://api.github.com/users/valorkin/repos","events_url":"https://api.github.com/users/valorkin/events{/privacy}","received_events_url":"https://api.github.com/users/valorkin/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-05-25T15:27:11Z","updated_at":"2015-05-27T20:19:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6fec6c33bb694e1e8051b825e7b2a7ecfd16793b","assignee":{"login":"valorkin","id":1107171,"avatar_url":"https://avatars.githubusercontent.com/u/1107171?v=3","gravatar_id":"","url":"https://api.github.com/users/valorkin","html_url":"https://github.com/valorkin","followers_url":"https://api.github.com/users/valorkin/followers","following_url":"https://api.github.com/users/valorkin/following{/other_user}","gists_url":"https://api.github.com/users/valorkin/gists{/gist_id}","starred_url":"https://api.github.com/users/valorkin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/valorkin/subscriptions","organizations_url":"https://api.github.com/users/valorkin/orgs","repos_url":"https://api.github.com/users/valorkin/repos","events_url":"https://api.github.com/users/valorkin/events{/privacy}","received_events_url":"https://api.github.com/users/valorkin/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/9/commits","review_comments_url":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/9/comments","review_comment_url":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/comments{/number}","comments_url":"https://api.github.com/repos/valor-software/valor-style-guides/issues/9/comments","statuses_url":"https://api.github.com/repos/valor-software/valor-style-guides/statuses/a738ad6314a1b5844b3c2a0faf87083d9d6e5f1b","head":{"label":"valor-software:proposal-feature-branching","ref":"proposal-feature-branching","sha":"a738ad6314a1b5844b3c2a0faf87083d9d6e5f1b","user":{"login":"valor-software","id":6849042,"avatar_url":"https://avatars.githubusercontent.com/u/6849042?v=3","gravatar_id":"","url":"https://api.github.com/users/valor-software","html_url":"https://github.com/valor-software","followers_url":"https://api.github.com/users/valor-software/followers","following_url":"https://api.github.com/users/valor-software/following{/other_user}","gists_url":"https://api.github.com/users/valor-software/gists{/gist_id}","starred_url":"https://api.github.com/users/valor-software/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/valor-software/subscriptions","organizations_url":"https://api.github.com/users/valor-software/orgs","repos_url":"https://api.github.com/users/valor-software/repos","events_url":"https://api.github.com/users/valor-software/events{/privacy}","received_events_url":"https://api.github.com/users/valor-software/received_events","type":"Organization","site_admin":false},"repo":{"id":28826243,"name":"valor-style-guides","full_name":"valor-software/valor-style-guides","owner":{"login":"valor-software","id":6849042,"avatar_url":"https://avatars.githubusercontent.com/u/6849042?v=3","gravatar_id":"","url":"https://api.github.com/users/valor-software","html_url":"https://github.com/valor-software","followers_url":"https://api.github.com/users/valor-software/followers","following_url":"https://api.github.com/users/valor-software/following{/other_user}","gists_url":"https://api.github.com/users/valor-software/gists{/gist_id}","starred_url":"https://api.github.com/users/valor-software/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/valor-software/subscriptions","organizations_url":"https://api.github.com/users/valor-software/orgs","repos_url":"https://api.github.com/users/valor-software/repos","events_url":"https://api.github.com/users/valor-software/events{/privacy}","received_events_url":"https://api.github.com/users/valor-software/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/valor-software/valor-style-guides","description":"Company-shared style guides and practices","fork":false,"url":"https://api.github.com/repos/valor-software/valor-style-guides","forks_url":"https://api.github.com/repos/valor-software/valor-style-guides/forks","keys_url":"https://api.github.com/repos/valor-software/valor-style-guides/keys{/key_id}","collaborators_url":"https://api.github.com/repos/valor-software/valor-style-guides/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/valor-software/valor-style-guides/teams","hooks_url":"https://api.github.com/repos/valor-software/valor-style-guides/hooks","issue_events_url":"https://api.github.com/repos/valor-software/valor-style-guides/issues/events{/number}","events_url":"https://api.github.com/repos/valor-software/valor-style-guides/events","assignees_url":"https://api.github.com/repos/valor-software/valor-style-guides/assignees{/user}","branches_url":"https://api.github.com/repos/valor-software/valor-style-guides/branches{/branch}","tags_url":"https://api.github.com/repos/valor-software/valor-style-guides/tags","blobs_url":"https://api.github.com/repos/valor-software/valor-style-guides/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/valor-software/valor-style-guides/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/valor-software/valor-style-guides/git/refs{/sha}","trees_url":"https://api.github.com/repos/valor-software/valor-style-guides/git/trees{/sha}","statuses_url":"https://api.github.com/repos/valor-software/valor-style-guides/statuses/{sha}","languages_url":"https://api.github.com/repos/valor-software/valor-style-guides/languages","stargazers_url":"https://api.github.com/repos/valor-software/valor-style-guides/stargazers","contributors_url":"https://api.github.com/repos/valor-software/valor-style-guides/contributors","subscribers_url":"https://api.github.com/repos/valor-software/valor-style-guides/subscribers","subscription_url":"https://api.github.com/repos/valor-software/valor-style-guides/subscription","commits_url":"https://api.github.com/repos/valor-software/valor-style-guides/commits{/sha}","git_commits_url":"https://api.github.com/repos/valor-software/valor-style-guides/git/commits{/sha}","comments_url":"https://api.github.com/repos/valor-software/valor-style-guides/comments{/number}","issue_comment_url":"https://api.github.com/repos/valor-software/valor-style-guides/issues/comments{/number}","contents_url":"https://api.github.com/repos/valor-software/valor-style-guides/contents/{+path}","compare_url":"https://api.github.com/repos/valor-software/valor-style-guides/compare/{base}...{head}","merges_url":"https://api.github.com/repos/valor-software/valor-style-guides/merges","archive_url":"https://api.github.com/repos/valor-software/valor-style-guides/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/valor-software/valor-style-guides/downloads","issues_url":"https://api.github.com/repos/valor-software/valor-style-guides/issues{/number}","pulls_url":"https://api.github.com/repos/valor-software/valor-style-guides/pulls{/number}","milestones_url":"https://api.github.com/repos/valor-software/valor-style-guides/milestones{/number}","notifications_url":"https://api.github.com/repos/valor-software/valor-style-guides/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/valor-software/valor-style-guides/labels{/name}","releases_url":"https://api.github.com/repos/valor-software/valor-style-guides/releases{/id}","created_at":"2015-01-05T18:44:37Z","updated_at":"2015-04-15T06:54:35Z","pushed_at":"2015-05-27T15:08:50Z","git_url":"git://github.com/valor-software/valor-style-guides.git","ssh_url":"git@github.com:valor-software/valor-style-guides.git","clone_url":"https://github.com/valor-software/valor-style-guides.git","svn_url":"https://github.com/valor-software/valor-style-guides","homepage":null,"size":2921,"stargazers_count":2,"watchers_count":2,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":3,"forks":2,"open_issues":3,"watchers":2,"default_branch":"master"}},"base":{"label":"valor-software:master","ref":"master","sha":"525a88b174a1a134caff79fb620bc91beee0ee3e","user":{"login":"valor-software","id":6849042,"avatar_url":"https://avatars.githubusercontent.com/u/6849042?v=3","gravatar_id":"","url":"https://api.github.com/users/valor-software","html_url":"https://github.com/valor-software","followers_url":"https://api.github.com/users/valor-software/followers","following_url":"https://api.github.com/users/valor-software/following{/other_user}","gists_url":"https://api.github.com/users/valor-software/gists{/gist_id}","starred_url":"https://api.github.com/users/valor-software/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/valor-software/subscriptions","organizations_url":"https://api.github.com/users/valor-software/orgs","repos_url":"https://api.github.com/users/valor-software/repos","events_url":"https://api.github.com/users/valor-software/events{/privacy}","received_events_url":"https://api.github.com/users/valor-software/received_events","type":"Organization","site_admin":false},"repo":{"id":28826243,"name":"valor-style-guides","full_name":"valor-software/valor-style-guides","owner":{"login":"valor-software","id":6849042,"avatar_url":"https://avatars.githubusercontent.com/u/6849042?v=3","gravatar_id":"","url":"https://api.github.com/users/valor-software","html_url":"https://github.com/valor-software","followers_url":"https://api.github.com/users/valor-software/followers","following_url":"https://api.github.com/users/valor-software/following{/other_user}","gists_url":"https://api.github.com/users/valor-software/gists{/gist_id}","starred_url":"https://api.github.com/users/valor-software/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/valor-software/subscriptions","organizations_url":"https://api.github.com/users/valor-software/orgs","repos_url":"https://api.github.com/users/valor-software/repos","events_url":"https://api.github.com/users/valor-software/events{/privacy}","received_events_url":"https://api.github.com/users/valor-software/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/valor-software/valor-style-guides","description":"Company-shared style guides and practices","fork":false,"url":"https://api.github.com/repos/valor-software/valor-style-guides","forks_url":"https://api.github.com/repos/valor-software/valor-style-guides/forks","keys_url":"https://api.github.com/repos/valor-software/valor-style-guides/keys{/key_id}","collaborators_url":"https://api.github.com/repos/valor-software/valor-style-guides/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/valor-software/valor-style-guides/teams","hooks_url":"https://api.github.com/repos/valor-software/valor-style-guides/hooks","issue_events_url":"https://api.github.com/repos/valor-software/valor-style-guides/issues/events{/number}","events_url":"https://api.github.com/repos/valor-software/valor-style-guides/events","assignees_url":"https://api.github.com/repos/valor-software/valor-style-guides/assignees{/user}","branches_url":"https://api.github.com/repos/valor-software/valor-style-guides/branches{/branch}","tags_url":"https://api.github.com/repos/valor-software/valor-style-guides/tags","blobs_url":"https://api.github.com/repos/valor-software/valor-style-guides/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/valor-software/valor-style-guides/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/valor-software/valor-style-guides/git/refs{/sha}","trees_url":"https://api.github.com/repos/valor-software/valor-style-guides/git/trees{/sha}","statuses_url":"https://api.github.com/repos/valor-software/valor-style-guides/statuses/{sha}","languages_url":"https://api.github.com/repos/valor-software/valor-style-guides/languages","stargazers_url":"https://api.github.com/repos/valor-software/valor-style-guides/stargazers","contributors_url":"https://api.github.com/repos/valor-software/valor-style-guides/contributors","subscribers_url":"https://api.github.com/repos/valor-software/valor-style-guides/subscribers","subscription_url":"https://api.github.com/repos/valor-software/valor-style-guides/subscription","commits_url":"https://api.github.com/repos/valor-software/valor-style-guides/commits{/sha}","git_commits_url":"https://api.github.com/repos/valor-software/valor-style-guides/git/commits{/sha}","comments_url":"https://api.github.com/repos/valor-software/valor-style-guides/comments{/number}","issue_comment_url":"https://api.github.com/repos/valor-software/valor-style-guides/issues/comments{/number}","contents_url":"https://api.github.com/repos/valor-software/valor-style-guides/contents/{+path}","compare_url":"https://api.github.com/repos/valor-software/valor-style-guides/compare/{base}...{head}","merges_url":"https://api.github.com/repos/valor-software/valor-style-guides/merges","archive_url":"https://api.github.com/repos/valor-software/valor-style-guides/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/valor-software/valor-style-guides/downloads","issues_url":"https://api.github.com/repos/valor-software/valor-style-guides/issues{/number}","pulls_url":"https://api.github.com/repos/valor-software/valor-style-guides/pulls{/number}","milestones_url":"https://api.github.com/repos/valor-software/valor-style-guides/milestones{/number}","notifications_url":"https://api.github.com/repos/valor-software/valor-style-guides/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/valor-software/valor-style-guides/labels{/name}","releases_url":"https://api.github.com/repos/valor-software/valor-style-guides/releases{/id}","created_at":"2015-01-05T18:44:37Z","updated_at":"2015-04-15T06:54:35Z","pushed_at":"2015-05-27T15:08:50Z","git_url":"git://github.com/valor-software/valor-style-guides.git","ssh_url":"git@github.com:valor-software/valor-style-guides.git","clone_url":"https://github.com/valor-software/valor-style-guides.git","svn_url":"https://github.com/valor-software/valor-style-guides","homepage":null,"size":2921,"stargazers_count":2,"watchers_count":2,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":3,"forks":2,"open_issues":3,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/9"},"html":{"href":"https://github.com/valor-software/valor-style-guides/pull/9"},"issue":{"href":"https://api.github.com/repos/valor-software/valor-style-guides/issues/9"},"comments":{"href":"https://api.github.com/repos/valor-software/valor-style-guides/issues/9/comments"},"review_comments":{"href":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/9/comments"},"review_comment":{"href":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/valor-software/valor-style-guides/pulls/9/commits"},"statuses":{"href":"https://api.github.com/repos/valor-software/valor-style-guides/statuses/a738ad6314a1b5844b3c2a0faf87083d9d6e5f1b"}}}}