git_reflow 0.8.10 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/.ruby-version +1 -1
  4. data/Appraisals +1 -6
  5. data/CHANGELOG.md +426 -348
  6. data/Gemfile.lock +15 -19
  7. data/LICENSE +20 -20
  8. data/README.md +27 -7
  9. data/Rakefile +8 -8
  10. data/bin/console +7 -7
  11. data/bin/setup +6 -6
  12. data/circle.yml +5 -5
  13. data/exe/git-reflow +9 -30
  14. data/git_reflow.gemspec +1 -2
  15. data/lib/git_reflow/config.rb +22 -13
  16. data/lib/git_reflow/git_helpers.rb +69 -22
  17. data/lib/git_reflow/git_server/base.rb +68 -68
  18. data/lib/git_reflow/git_server/git_hub/pull_request.rb +15 -13
  19. data/lib/git_reflow/git_server/pull_request.rb +4 -2
  20. data/lib/git_reflow/merge_error.rb +9 -9
  21. data/lib/git_reflow/rspec/command_line_helpers.rb +9 -1
  22. data/lib/git_reflow/rspec/stub_helpers.rb +13 -13
  23. data/lib/git_reflow/rspec/workflow_helpers.rb +18 -0
  24. data/lib/git_reflow/rspec.rb +1 -0
  25. data/lib/git_reflow/sandbox.rb +1 -0
  26. data/lib/git_reflow/version.rb +1 -1
  27. data/lib/git_reflow/workflow.rb +277 -9
  28. data/lib/git_reflow/workflows/FlatMergeWorkflow +38 -0
  29. data/lib/git_reflow/workflows/core.rb +208 -79
  30. data/lib/git_reflow.rb +3 -14
  31. data/spec/fixtures/awesome_workflow.rb +2 -6
  32. data/spec/fixtures/git/git_config +7 -7
  33. data/spec/fixtures/issues/comment.json.erb +27 -27
  34. data/spec/fixtures/issues/comments.json +29 -29
  35. data/spec/fixtures/issues/comments.json.erb +15 -15
  36. data/spec/fixtures/pull_requests/comment.json.erb +45 -45
  37. data/spec/fixtures/pull_requests/comments.json +47 -47
  38. data/spec/fixtures/pull_requests/comments.json.erb +15 -15
  39. data/spec/fixtures/pull_requests/commits.json +29 -29
  40. data/spec/fixtures/pull_requests/external_pull_request.json +145 -145
  41. data/spec/fixtures/pull_requests/pull_request.json +142 -142
  42. data/spec/fixtures/pull_requests/pull_request.json.erb +142 -142
  43. data/spec/fixtures/pull_requests/pull_request_branch_nonexistent_error.json +32 -0
  44. data/spec/fixtures/pull_requests/pull_request_exists_error.json +32 -32
  45. data/spec/fixtures/pull_requests/pull_requests.json +136 -136
  46. data/spec/fixtures/repositories/commit.json +53 -53
  47. data/spec/fixtures/repositories/commit.json.erb +53 -53
  48. data/spec/fixtures/repositories/commits.json.erb +13 -13
  49. data/spec/fixtures/repositories/statuses.json +31 -31
  50. data/spec/lib/git_reflow/git_helpers_spec.rb +115 -12
  51. data/spec/lib/git_reflow/git_server/git_hub/pull_request_spec.rb +6 -6
  52. data/spec/lib/git_reflow/git_server/pull_request_spec.rb +9 -3
  53. data/spec/lib/git_reflow/workflow_spec.rb +190 -11
  54. data/spec/lib/git_reflow/workflows/core_spec.rb +224 -65
  55. data/spec/lib/git_reflow/workflows/flat_merge_spec.rb +17 -6
  56. data/spec/lib/git_reflow_spec.rb +2 -25
  57. data/spec/spec_helper.rb +3 -0
  58. data/spec/support/github_helpers.rb +1 -1
  59. data/spec/support/mock_pull_request.rb +17 -17
  60. data/spec/support/web_mocks.rb +39 -39
  61. metadata +9 -28
  62. data/lib/git_reflow/commands/deliver.rb +0 -10
  63. data/lib/git_reflow/commands/refresh.rb +0 -20
  64. data/lib/git_reflow/commands/review.rb +0 -13
  65. data/lib/git_reflow/commands/setup.rb +0 -11
  66. data/lib/git_reflow/commands/stage.rb +0 -9
  67. data/lib/git_reflow/commands/start.rb +0 -18
  68. data/lib/git_reflow/commands/status.rb +0 -7
  69. data/lib/git_reflow/workflows/flat_merge.rb +0 -10
  70. data/spec/fixtures/workflow_with_super.rb +0 -8
@@ -1,142 +1,142 @@
1
- {
2
- "url": "https://api.github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>",
3
- "html_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>",
4
- "diff_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>.diff",
5
- "patch_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>.patch",
6
- "issue_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>/issue/<%= number %>",
7
- "number": <%= number %>,
8
- "state": "<%= state %>",
9
- "title": "<%= title %>",
10
- "body": "<%= body %>",
11
- "created_at": "2011-01-26T19:01:12Z",
12
- "updated_at": "2011-01-26T19:01:12Z",
13
- "closed_at": "2011-01-26T19:01:12Z",
14
- "merged_at": "2011-01-26T19:01:12Z",
15
- "_links": {
16
- "self": {
17
- "href": "https://api.github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>"
18
- },
19
- "html": {
20
- "href": "https://github.com/<%= repo_owner %>/<%= repo_name %>/pull/<%= number %>"
21
- },
22
- "comments": {
23
- "href": "https://api.github.com/<%= repo_owner %>/<%= repo_name %>/issues/<%= number %>/comments"
24
- },
25
- "review_comments": {
26
- "href": "https://api.github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>/comments"
27
- }
28
- },
29
- "merged": false,
30
- "mergeable": true,
31
- "merged_by": {
32
- "login": "reenhanced",
33
- "id": 1,
34
- "avatar_url": "https://github.com/images/error/octocat_happy.gif",
35
- "gravatar_id": "somehexcode",
36
- "url": "https://api.github.com/users/reenhanced"
37
- },
38
- "comments": 10,
39
- "commits": 3,
40
- "additions": 100,
41
- "deletions": 3,
42
- "changed_files": 5,
43
- "user": {
44
- "login": "<%= owner %>",
45
- "id": 1,
46
- "avatar_url": "https://github.com/images/error/octocat_happy.gif",
47
- "gravatar_id": "",
48
- "url": "https://api.github.com/users/<%= owner %>",
49
- "html_url": "https://github.com/<%= owner %>",
50
- "followers_url": "https://api.github.com/users/<%= owner %>/followers",
51
- "following_url": "https://api.github.com/users/<%= owner %>/following{/other_user}",
52
- "gists_url": "https://api.github.com/users/<%= owner %>/gists{/gist_id}",
53
- "starred_url": "https://api.github.com/users/<%= owner %>/starred{/owner}{/repo}",
54
- "subscriptions_url": "https://api.github.com/users/<%= owner %>/subscriptions",
55
- "organizations_url": "https://api.github.com/users/<%= owner %>/orgs",
56
- "repos_url": "https://api.github.com/users/<%= owner %>/repos",
57
- "events_url": "https://api.github.com/users/<%= owner %>/events{/privacy}",
58
- "received_events_url": "https://api.github.com/users/<%= owner %>/received_events",
59
- "type": "User",
60
- "site_admin": false
61
- },
62
- "head": {
63
- "label": "<%= feature_branch %>",
64
- "ref": "<%= feature_branch %>",
65
- "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e",
66
- "user": {
67
- "login": "<%= owner %>",
68
- "id": 1,
69
- "avatar_url": "https://github.com/images/error/octocat_happy.gif",
70
- "gravatar_id": "somehexcode",
71
- "url": "https://api.github.com/users/<%= owner %>"
72
- },
73
- "repo": {
74
- "url": "https://api.github.com/repos/<%= feature_repo_owner %>/<%= repo_name %>",
75
- "html_url": "https://github.com/<%= feature_repo_owner %>/<%= repo_name %>",
76
- "clone_url": "https://github.com/<%= feature_repo_owner %>/<%= repo_name %>.git",
77
- "git_url": "git://github.com/<%= feature_repo_owner %>/<%= repo_name %>.git",
78
- "ssh_url": "git@github.com:<%= feature_repo_owner %>/<%= repo_name %>.git",
79
- "svn_url": "https://svn.github.com/<%= feature_repo_owner %>/<%= repo_name %>",
80
- "owner": {
81
- "login": "<%= owner %>",
82
- "id": 1,
83
- "avatar_url": "https://github.com/images/error/octocat_happy.gif",
84
- "gravatar_id": "somehexcode",
85
- "url": "https://api.github.com/users/<%= owner %>"
86
- },
87
- "name": "<%= repo_name %>",
88
- "description": "This your first repo!",
89
- "homepage": "https://github.com",
90
- "language": null,
91
- "private": false,
92
- "fork": false,
93
- "forks": 9,
94
- "watchers": 80,
95
- "size": 108,
96
- "master_branch": "master",
97
- "open_issues": 1,
98
- "pushed_at": "2011-01-26T19:06:43Z",
99
- "created_at": "2011-01-26T19:01:12Z"
100
- }
101
- },
102
- "base": {
103
- "label": "<%= base_branch %>",
104
- "ref": "<%= base_branch %>",
105
- "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e",
106
- "user": {
107
- "login": "reenhanced",
108
- "id": 1,
109
- "avatar_url": "https://github.com/images/error/octocat_happy.gif",
110
- "gravatar_id": "somehexcode",
111
- "url": "https://api.github.com/users/reenhanced"
112
- },
113
- "repo": {
114
- "url": "https://api.github.com/repos/<%= repo_owner %>/<%= repo_name %>",
115
- "html_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>",
116
- "clone_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>.git",
117
- "git_url": "git://github.com/<%= repo_owner %>/<%= repo_name %>.git",
118
- "ssh_url": "git@github.com:<%= repo_owner %>/<%= repo_name %>.git",
119
- "svn_url": "https://svn.github.com/<%= repo_owner %>/<%= repo_name %>",
120
- "owner": {
121
- "login": "reenhanced",
122
- "id": 1,
123
- "avatar_url": "https://github.com/images/error/octocat_happy.gif",
124
- "gravatar_id": "somehexcode",
125
- "url": "https://api.github.com/users/reenhanced"
126
- },
127
- "name": "repo",
128
- "description": "This your first repo!",
129
- "homepage": "https://github.com",
130
- "language": null,
131
- "private": false,
132
- "fork": false,
133
- "forks": 9,
134
- "watchers": 80,
135
- "size": 108,
136
- "master_branch": "master",
137
- "open_issues": 1,
138
- "pushed_at": "2011-01-26T19:06:43Z",
139
- "created_at": "2011-01-26T19:01:12Z"
140
- }
141
- }
142
- }
1
+ {
2
+ "url": "https://api.github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>",
3
+ "html_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>",
4
+ "diff_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>.diff",
5
+ "patch_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>.patch",
6
+ "issue_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>/issue/<%= number %>",
7
+ "number": <%= number %>,
8
+ "state": "<%= state %>",
9
+ "title": "<%= title %>",
10
+ "body": "<%= body %>",
11
+ "created_at": "2011-01-26T19:01:12Z",
12
+ "updated_at": "2011-01-26T19:01:12Z",
13
+ "closed_at": "2011-01-26T19:01:12Z",
14
+ "merged_at": "2011-01-26T19:01:12Z",
15
+ "_links": {
16
+ "self": {
17
+ "href": "https://api.github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>"
18
+ },
19
+ "html": {
20
+ "href": "https://github.com/<%= repo_owner %>/<%= repo_name %>/pull/<%= number %>"
21
+ },
22
+ "comments": {
23
+ "href": "https://api.github.com/<%= repo_owner %>/<%= repo_name %>/issues/<%= number %>/comments"
24
+ },
25
+ "review_comments": {
26
+ "href": "https://api.github.com/<%= repo_owner %>/<%= repo_name %>/pulls/<%= number %>/comments"
27
+ }
28
+ },
29
+ "merged": false,
30
+ "mergeable": true,
31
+ "merged_by": {
32
+ "login": "reenhanced",
33
+ "id": 1,
34
+ "avatar_url": "https://github.com/images/error/octocat_happy.gif",
35
+ "gravatar_id": "somehexcode",
36
+ "url": "https://api.github.com/users/reenhanced"
37
+ },
38
+ "comments": 10,
39
+ "commits": 3,
40
+ "additions": 100,
41
+ "deletions": 3,
42
+ "changed_files": 5,
43
+ "user": {
44
+ "login": "<%= owner %>",
45
+ "id": 1,
46
+ "avatar_url": "https://github.com/images/error/octocat_happy.gif",
47
+ "gravatar_id": "",
48
+ "url": "https://api.github.com/users/<%= owner %>",
49
+ "html_url": "https://github.com/<%= owner %>",
50
+ "followers_url": "https://api.github.com/users/<%= owner %>/followers",
51
+ "following_url": "https://api.github.com/users/<%= owner %>/following{/other_user}",
52
+ "gists_url": "https://api.github.com/users/<%= owner %>/gists{/gist_id}",
53
+ "starred_url": "https://api.github.com/users/<%= owner %>/starred{/owner}{/repo}",
54
+ "subscriptions_url": "https://api.github.com/users/<%= owner %>/subscriptions",
55
+ "organizations_url": "https://api.github.com/users/<%= owner %>/orgs",
56
+ "repos_url": "https://api.github.com/users/<%= owner %>/repos",
57
+ "events_url": "https://api.github.com/users/<%= owner %>/events{/privacy}",
58
+ "received_events_url": "https://api.github.com/users/<%= owner %>/received_events",
59
+ "type": "User",
60
+ "site_admin": false
61
+ },
62
+ "head": {
63
+ "label": "<%= feature_branch %>",
64
+ "ref": "<%= feature_branch %>",
65
+ "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e",
66
+ "user": {
67
+ "login": "<%= owner %>",
68
+ "id": 1,
69
+ "avatar_url": "https://github.com/images/error/octocat_happy.gif",
70
+ "gravatar_id": "somehexcode",
71
+ "url": "https://api.github.com/users/<%= owner %>"
72
+ },
73
+ "repo": {
74
+ "url": "https://api.github.com/repos/<%= feature_repo_owner %>/<%= repo_name %>",
75
+ "html_url": "https://github.com/<%= feature_repo_owner %>/<%= repo_name %>",
76
+ "clone_url": "https://github.com/<%= feature_repo_owner %>/<%= repo_name %>.git",
77
+ "git_url": "git://github.com/<%= feature_repo_owner %>/<%= repo_name %>.git",
78
+ "ssh_url": "git@github.com:<%= feature_repo_owner %>/<%= repo_name %>.git",
79
+ "svn_url": "https://svn.github.com/<%= feature_repo_owner %>/<%= repo_name %>",
80
+ "owner": {
81
+ "login": "<%= owner %>",
82
+ "id": 1,
83
+ "avatar_url": "https://github.com/images/error/octocat_happy.gif",
84
+ "gravatar_id": "somehexcode",
85
+ "url": "https://api.github.com/users/<%= owner %>"
86
+ },
87
+ "name": "<%= repo_name %>",
88
+ "description": "This your first repo!",
89
+ "homepage": "https://github.com",
90
+ "language": null,
91
+ "private": false,
92
+ "fork": false,
93
+ "forks": 9,
94
+ "watchers": 80,
95
+ "size": 108,
96
+ "master_branch": "master",
97
+ "open_issues": 1,
98
+ "pushed_at": "2011-01-26T19:06:43Z",
99
+ "created_at": "2011-01-26T19:01:12Z"
100
+ }
101
+ },
102
+ "base": {
103
+ "label": "<%= base_branch %>",
104
+ "ref": "<%= base_branch %>",
105
+ "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e",
106
+ "user": {
107
+ "login": "reenhanced",
108
+ "id": 1,
109
+ "avatar_url": "https://github.com/images/error/octocat_happy.gif",
110
+ "gravatar_id": "somehexcode",
111
+ "url": "https://api.github.com/users/reenhanced"
112
+ },
113
+ "repo": {
114
+ "url": "https://api.github.com/repos/<%= repo_owner %>/<%= repo_name %>",
115
+ "html_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>",
116
+ "clone_url": "https://github.com/<%= repo_owner %>/<%= repo_name %>.git",
117
+ "git_url": "git://github.com/<%= repo_owner %>/<%= repo_name %>.git",
118
+ "ssh_url": "git@github.com:<%= repo_owner %>/<%= repo_name %>.git",
119
+ "svn_url": "https://svn.github.com/<%= repo_owner %>/<%= repo_name %>",
120
+ "owner": {
121
+ "login": "reenhanced",
122
+ "id": 1,
123
+ "avatar_url": "https://github.com/images/error/octocat_happy.gif",
124
+ "gravatar_id": "somehexcode",
125
+ "url": "https://api.github.com/users/reenhanced"
126
+ },
127
+ "name": "repo",
128
+ "description": "This your first repo!",
129
+ "homepage": "https://github.com",
130
+ "language": null,
131
+ "private": false,
132
+ "fork": false,
133
+ "forks": 9,
134
+ "watchers": 80,
135
+ "size": 108,
136
+ "master_branch": "master",
137
+ "open_issues": 1,
138
+ "pushed_at": "2011-01-26T19:06:43Z",
139
+ "created_at": "2011-01-26T19:01:12Z"
140
+ }
141
+ }
142
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ :method => :post,
3
+ :body => "{
4
+ \"errors\" : [{
5
+ \"code\" : \"invalid\",
6
+ \"field\" : \"head\",
7
+ \"message\" : \"head The branch reenhanced:banana does not exist.\",
8
+ \"resource\" : \"PullRequest\" }],
9
+ \"message\" : \"Validation Failed\"}",
10
+ :url => "https://api.github.com/repos/reenhanced/gitreflow/pulls?access_token=12345",
11
+ :request_headers => {
12
+ "Content-Type" => "application/json",
13
+ "Authorization" => "Token token=\"12345\""
14
+ },
15
+ :parallel_manager => nil,
16
+ :request => {:proxy => nil},
17
+ :ssl => {},
18
+ :status => 422,
19
+ :response_headers => {
20
+ "server" => "nginx/1.0.13",
21
+ "date" => "Fri, 27 Apr 2012 13:02:49 GMT",
22
+ "content-type" => "application/json; charset=utf-8",
23
+ "connection" => "close",
24
+ "status" => "422 Unprocessable Entity",
25
+ "x-ratelimit-limit" => "5000",
26
+ "etag" => "\"ebdeb717fe19444c308e608728569d5a\"",
27
+ "x-oauth-scopes" => "repo",
28
+ "x-ratelimit-remaining" => "4996",
29
+ "x-accepted-oauth-scopes" => "repo",
30
+ "content-length" => "192"},
31
+ :response => ""
32
+ }
@@ -1,32 +1,32 @@
1
- {
2
- :method => :post,
3
- :body => "{
4
- \"errors\" : [{
5
- \"code\" : \"custom\",
6
- \"field\" : \"base\",
7
- \"message\" : \"base A pull request already exists for reenhanced:banana.\",
8
- \"resource\" : \"PullRequest\" }],
9
- \"message\" : \"Validation Failed\"}",
10
- :url => "https://api.github.com/repos/reenhanced/gitreflow/pulls?access_token=12345",
11
- :request_headers => {
12
- "Content-Type" => "application/json",
13
- "Authorization" => "Token token=\"12345\""
14
- },
15
- :parallel_manager => nil,
16
- :request => {:proxy => nil},
17
- :ssl => {},
18
- :status => 422,
19
- :response_headers => {
20
- "server" => "nginx/1.0.13",
21
- "date" => "Fri, 27 Apr 2012 13:02:49 GMT",
22
- "content-type" => "application/json; charset=utf-8",
23
- "connection" => "close",
24
- "status" => "422 Unprocessable Entity",
25
- "x-ratelimit-limit" => "5000",
26
- "etag" => "\"ebdeb717fe19444c308e608728569d5a\"",
27
- "x-oauth-scopes" => "repo",
28
- "x-ratelimit-remaining" => "4996",
29
- "x-accepted-oauth-scopes" => "repo",
30
- "content-length" => "192"},
31
- :response => ""
32
- }
1
+ {
2
+ :method => :post,
3
+ :body => "{
4
+ \"errors\" : [{
5
+ \"code\" : \"custom\",
6
+ \"field\" : \"base\",
7
+ \"message\" : \"base A pull request already exists for reenhanced:banana.\",
8
+ \"resource\" : \"PullRequest\" }],
9
+ \"message\" : \"Validation Failed\"}",
10
+ :url => "https://api.github.com/repos/reenhanced/gitreflow/pulls?access_token=12345",
11
+ :request_headers => {
12
+ "Content-Type" => "application/json",
13
+ "Authorization" => "Token token=\"12345\""
14
+ },
15
+ :parallel_manager => nil,
16
+ :request => {:proxy => nil},
17
+ :ssl => {},
18
+ :status => 422,
19
+ :response_headers => {
20
+ "server" => "nginx/1.0.13",
21
+ "date" => "Fri, 27 Apr 2012 13:02:49 GMT",
22
+ "content-type" => "application/json; charset=utf-8",
23
+ "connection" => "close",
24
+ "status" => "422 Unprocessable Entity",
25
+ "x-ratelimit-limit" => "5000",
26
+ "etag" => "\"ebdeb717fe19444c308e608728569d5a\"",
27
+ "x-oauth-scopes" => "repo",
28
+ "x-ratelimit-remaining" => "4996",
29
+ "x-accepted-oauth-scopes" => "repo",
30
+ "content-length" => "192"},
31
+ :response => ""
32
+ }