gitlab 4.8.0 → 4.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -7
- data/lib/gitlab/cli.rb +0 -3
- data/lib/gitlab/cli_helpers.rb +11 -10
- data/lib/gitlab/client.rb +15 -0
- data/lib/gitlab/client/application_settings.rb +172 -0
- data/lib/gitlab/client/avatar.rb +21 -0
- data/lib/gitlab/client/boards.rb +56 -0
- data/lib/gitlab/client/build_variables.rb +14 -10
- data/lib/gitlab/client/commits.rb +18 -2
- data/lib/gitlab/client/container_registry.rb +85 -0
- data/lib/gitlab/client/epics.rb +73 -0
- data/lib/gitlab/client/features.rb +48 -0
- data/lib/gitlab/client/group_boards.rb +141 -0
- data/lib/gitlab/client/group_labels.rb +88 -0
- data/lib/gitlab/client/groups.rb +66 -2
- data/lib/gitlab/client/issue_links.rb +48 -0
- data/lib/gitlab/client/labels.rb +1 -1
- data/lib/gitlab/client/lint.rb +19 -0
- data/lib/gitlab/client/markdown.rb +23 -0
- data/lib/gitlab/client/merge_request_approvals.rb +9 -8
- data/lib/gitlab/client/merge_requests.rb +12 -0
- data/lib/gitlab/client/notes.rb +1 -1
- data/lib/gitlab/client/pipelines.rb +12 -0
- data/lib/gitlab/client/project_clusters.rb +83 -0
- data/lib/gitlab/client/project_release_links.rb +76 -0
- data/lib/gitlab/client/project_releases.rb +79 -0
- data/lib/gitlab/client/projects.rb +27 -6
- data/lib/gitlab/client/repositories.rb +5 -3
- data/lib/gitlab/client/repository_files.rb +16 -0
- data/lib/gitlab/client/resource_label_events.rb +82 -0
- data/lib/gitlab/client/runners.rb +49 -2
- data/lib/gitlab/client/search.rb +66 -0
- data/lib/gitlab/client/users.rb +7 -9
- data/lib/gitlab/configuration.rb +1 -1
- data/lib/gitlab/error.rb +46 -1
- data/lib/gitlab/paginated_response.rb +19 -0
- data/lib/gitlab/request.rb +15 -25
- data/lib/gitlab/shell_history.rb +4 -8
- data/lib/gitlab/version.rb +1 -1
- metadata +33 -15
- data/.github/stale.yml +0 -18
- data/.gitignore +0 -22
- data/.rubocop_todo.yml +0 -46
- data/CONTRIBUTING.md +0 -195
- data/Gemfile +0 -6
- data/Rakefile +0 -15
- data/bin/console +0 -11
- data/bin/setup +0 -6
- data/gitlab.gemspec +0 -36
data/lib/gitlab/request.rb
CHANGED
@@ -42,7 +42,12 @@ module Gitlab
|
|
42
42
|
%w[get post put delete].each do |method|
|
43
43
|
define_method method do |path, options = {}|
|
44
44
|
httparty_config(options)
|
45
|
-
|
45
|
+
|
46
|
+
unless options[:unauthenticated]
|
47
|
+
options[:headers] ||= {}
|
48
|
+
options[:headers].merge!(authorization_header)
|
49
|
+
end
|
50
|
+
|
46
51
|
validate self.class.send(method, @endpoint + path, options)
|
47
52
|
end
|
48
53
|
end
|
@@ -50,19 +55,7 @@ module Gitlab
|
|
50
55
|
# Checks the response code for common errors.
|
51
56
|
# Returns parsed response for successful requests.
|
52
57
|
def validate(response)
|
53
|
-
error_klass =
|
54
|
-
when 400 then Error::BadRequest
|
55
|
-
when 401 then Error::Unauthorized
|
56
|
-
when 403 then Error::Forbidden
|
57
|
-
when 404 then Error::NotFound
|
58
|
-
when 405 then Error::MethodNotAllowed
|
59
|
-
when 409 then Error::Conflict
|
60
|
-
when 422 then Error::Unprocessable
|
61
|
-
when 500 then Error::InternalServerError
|
62
|
-
when 502 then Error::BadGateway
|
63
|
-
when 503 then Error::ServiceUnavailable
|
64
|
-
end
|
65
|
-
|
58
|
+
error_klass = Error::STATUS_MAPPINGS[response.code]
|
66
59
|
raise error_klass, response if error_klass
|
67
60
|
|
68
61
|
parsed = response.parsed_response
|
@@ -74,28 +67,25 @@ module Gitlab
|
|
74
67
|
# Sets a base_uri and default_params for requests.
|
75
68
|
# @raise [Error::MissingCredentials] if endpoint not set.
|
76
69
|
def request_defaults(sudo = nil)
|
77
|
-
self.class.default_params sudo: sudo
|
78
70
|
raise Error::MissingCredentials, 'Please set an endpoint to API' unless @endpoint
|
79
71
|
|
72
|
+
self.class.default_params sudo: sudo
|
80
73
|
self.class.default_params.delete(:sudo) if sudo.nil?
|
81
74
|
end
|
82
75
|
|
83
76
|
private
|
84
77
|
|
85
|
-
#
|
78
|
+
# Returns an Authorization header hash
|
86
79
|
#
|
87
|
-
# @param [Hash] options A customizable set of options.
|
88
|
-
# @option options [Boolean] :unauthenticated true if the API call does not require user authentication.
|
89
80
|
# @raise [Error::MissingCredentials] if private_token and auth_token are not set.
|
90
|
-
def authorization_header
|
91
|
-
return if options[:unauthenticated]
|
81
|
+
def authorization_header
|
92
82
|
raise Error::MissingCredentials, 'Please provide a private_token or auth_token for user' unless @private_token
|
93
83
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
84
|
+
if @private_token.size < 21
|
85
|
+
{ 'PRIVATE-TOKEN' => @private_token }
|
86
|
+
else
|
87
|
+
{ 'Authorization' => "Bearer #{@private_token}" }
|
88
|
+
end
|
99
89
|
end
|
100
90
|
|
101
91
|
# Set HTTParty configuration
|
data/lib/gitlab/shell_history.rb
CHANGED
@@ -30,12 +30,8 @@ class Gitlab::Shell
|
|
30
30
|
private
|
31
31
|
|
32
32
|
def history_file
|
33
|
-
|
34
|
-
|
35
|
-
else
|
36
|
-
@history_file = File.open(history_file_path, 'w', 0o600).tap do |file|
|
37
|
-
file.sync = true
|
38
|
-
end
|
33
|
+
@history_file ||= File.open(history_file_path, 'w', 0o600).tap do |file|
|
34
|
+
file.sync = true
|
39
35
|
end
|
40
36
|
rescue Errno::EACCES
|
41
37
|
warn 'History not saved; unable to open your history file for writing.'
|
@@ -50,8 +46,8 @@ class Gitlab::Shell
|
|
50
46
|
path = history_file_path
|
51
47
|
|
52
48
|
File.foreach(path) { |line| yield(line) } if File.exist?(path)
|
53
|
-
rescue StandardError =>
|
54
|
-
warn "History file not loaded: #{
|
49
|
+
rescue StandardError => e
|
50
|
+
warn "History file not loaded: #{e.message}"
|
55
51
|
end
|
56
52
|
|
57
53
|
def max_lines
|
data/lib/gitlab/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nihad Abbasov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-12-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -18,6 +18,9 @@ dependencies:
|
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: 0.14.0
|
21
|
+
- - "~>"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '0.14'
|
21
24
|
type: :runtime
|
22
25
|
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -25,10 +28,16 @@ dependencies:
|
|
25
28
|
- - ">="
|
26
29
|
- !ruby/object:Gem::Version
|
27
30
|
version: 0.14.0
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.14'
|
28
34
|
- !ruby/object:Gem::Dependency
|
29
35
|
name: terminal-table
|
30
36
|
requirement: !ruby/object:Gem::Requirement
|
31
37
|
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.5'
|
32
41
|
- - ">="
|
33
42
|
- !ruby/object:Gem::Version
|
34
43
|
version: 1.5.1
|
@@ -36,6 +45,9 @@ dependencies:
|
|
36
45
|
prerelease: false
|
37
46
|
version_requirements: !ruby/object:Gem::Requirement
|
38
47
|
requirements:
|
48
|
+
- - "~>"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '1.5'
|
39
51
|
- - ">="
|
40
52
|
- !ruby/object:Gem::Version
|
41
53
|
version: 1.5.1
|
@@ -111,32 +123,25 @@ dependencies:
|
|
111
123
|
version: '0'
|
112
124
|
description: Ruby client and CLI for GitLab API
|
113
125
|
email:
|
114
|
-
-
|
126
|
+
- nihad@42na.in
|
115
127
|
- asedge@gmail.com
|
116
128
|
executables:
|
117
129
|
- gitlab
|
118
130
|
extensions: []
|
119
131
|
extra_rdoc_files: []
|
120
132
|
files:
|
121
|
-
- ".github/stale.yml"
|
122
|
-
- ".gitignore"
|
123
|
-
- ".rubocop_todo.yml"
|
124
133
|
- CHANGELOG.md
|
125
|
-
- CONTRIBUTING.md
|
126
|
-
- Gemfile
|
127
134
|
- LICENSE.txt
|
128
135
|
- README.md
|
129
|
-
- Rakefile
|
130
|
-
- bin/console
|
131
|
-
- bin/setup
|
132
136
|
- exe/gitlab
|
133
|
-
- gitlab.gemspec
|
134
137
|
- lib/gitlab.rb
|
135
138
|
- lib/gitlab/api.rb
|
136
139
|
- lib/gitlab/cli.rb
|
137
140
|
- lib/gitlab/cli_helpers.rb
|
138
141
|
- lib/gitlab/client.rb
|
139
142
|
- lib/gitlab/client/access_requests.rb
|
143
|
+
- lib/gitlab/client/application_settings.rb
|
144
|
+
- lib/gitlab/client/avatar.rb
|
140
145
|
- lib/gitlab/client/award_emojis.rb
|
141
146
|
- lib/gitlab/client/boards.rb
|
142
147
|
- lib/gitlab/client/branches.rb
|
@@ -144,15 +149,23 @@ files:
|
|
144
149
|
- lib/gitlab/client/build_variables.rb
|
145
150
|
- lib/gitlab/client/builds.rb
|
146
151
|
- lib/gitlab/client/commits.rb
|
152
|
+
- lib/gitlab/client/container_registry.rb
|
147
153
|
- lib/gitlab/client/deployments.rb
|
148
154
|
- lib/gitlab/client/environments.rb
|
155
|
+
- lib/gitlab/client/epics.rb
|
149
156
|
- lib/gitlab/client/events.rb
|
157
|
+
- lib/gitlab/client/features.rb
|
158
|
+
- lib/gitlab/client/group_boards.rb
|
159
|
+
- lib/gitlab/client/group_labels.rb
|
150
160
|
- lib/gitlab/client/group_milestones.rb
|
151
161
|
- lib/gitlab/client/groups.rb
|
162
|
+
- lib/gitlab/client/issue_links.rb
|
152
163
|
- lib/gitlab/client/issues.rb
|
153
164
|
- lib/gitlab/client/jobs.rb
|
154
165
|
- lib/gitlab/client/keys.rb
|
155
166
|
- lib/gitlab/client/labels.rb
|
167
|
+
- lib/gitlab/client/lint.rb
|
168
|
+
- lib/gitlab/client/markdown.rb
|
156
169
|
- lib/gitlab/client/merge_request_approvals.rb
|
157
170
|
- lib/gitlab/client/merge_requests.rb
|
158
171
|
- lib/gitlab/client/milestones.rb
|
@@ -162,12 +175,17 @@ files:
|
|
162
175
|
- lib/gitlab/client/pipeline_triggers.rb
|
163
176
|
- lib/gitlab/client/pipelines.rb
|
164
177
|
- lib/gitlab/client/project_badges.rb
|
178
|
+
- lib/gitlab/client/project_clusters.rb
|
179
|
+
- lib/gitlab/client/project_release_links.rb
|
180
|
+
- lib/gitlab/client/project_releases.rb
|
165
181
|
- lib/gitlab/client/projects.rb
|
166
182
|
- lib/gitlab/client/protected_tags.rb
|
167
183
|
- lib/gitlab/client/repositories.rb
|
168
184
|
- lib/gitlab/client/repository_files.rb
|
169
185
|
- lib/gitlab/client/repository_submodules.rb
|
186
|
+
- lib/gitlab/client/resource_label_events.rb
|
170
187
|
- lib/gitlab/client/runners.rb
|
188
|
+
- lib/gitlab/client/search.rb
|
171
189
|
- lib/gitlab/client/services.rb
|
172
190
|
- lib/gitlab/client/sidekiq.rb
|
173
191
|
- lib/gitlab/client/snippets.rb
|
@@ -189,9 +207,9 @@ files:
|
|
189
207
|
- lib/gitlab/shell.rb
|
190
208
|
- lib/gitlab/shell_history.rb
|
191
209
|
- lib/gitlab/version.rb
|
192
|
-
homepage: https://github.com/
|
210
|
+
homepage: https://github.com/NARKOZ/gitlab
|
193
211
|
licenses:
|
194
|
-
- BSD
|
212
|
+
- BSD-2-Clause
|
195
213
|
metadata: {}
|
196
214
|
post_install_message:
|
197
215
|
rdoc_options: []
|
@@ -208,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
226
|
- !ruby/object:Gem::Version
|
209
227
|
version: '0'
|
210
228
|
requirements: []
|
211
|
-
rubygems_version: 3.0.
|
229
|
+
rubygems_version: 3.0.6
|
212
230
|
signing_key:
|
213
231
|
specification_version: 4
|
214
232
|
summary: A Ruby wrapper and CLI for the GitLab API
|
data/.github/stale.yml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# Number of days of inactivity before an issue becomes stale
|
2
|
-
daysUntilStale: 90
|
3
|
-
# Number of days of inactivity before a stale issue is closed
|
4
|
-
daysUntilClose: 10
|
5
|
-
# Issues with these labels will never be considered stale
|
6
|
-
exemptLabels:
|
7
|
-
- pinned
|
8
|
-
- security
|
9
|
-
- contribution welcome
|
10
|
-
# Label to use when marking an issue as stale
|
11
|
-
staleLabel: stale
|
12
|
-
# Comment to post when marking an issue as stale. Set to `false` to disable
|
13
|
-
markComment: >
|
14
|
-
This issue has been automatically marked as stale because it has not had
|
15
|
-
recent activity. It will be closed if no further activity occurs. Thank you
|
16
|
-
for your contributions.
|
17
|
-
# Comment to post when closing a stale issue. Set to `false` to disable
|
18
|
-
closeComment: false
|
data/.gitignore
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
*.swp
|
4
|
-
.bundle
|
5
|
-
.config
|
6
|
-
.yardoc
|
7
|
-
Gemfile.lock
|
8
|
-
InstalledFiles
|
9
|
-
_yardoc
|
10
|
-
coverage
|
11
|
-
doc/
|
12
|
-
lib/bundler/man
|
13
|
-
pkg
|
14
|
-
rdoc
|
15
|
-
spec/reports
|
16
|
-
test/tmp
|
17
|
-
test/version_tmp
|
18
|
-
tmp
|
19
|
-
vendor/bundle
|
20
|
-
.idea
|
21
|
-
.ruby-version
|
22
|
-
.ruby-gemset
|
data/.rubocop_todo.yml
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
# This configuration was generated by
|
2
|
-
# `rubocop --auto-gen-config`
|
3
|
-
# on 2018-10-10 10:25:27 +0400 using RuboCop version 0.59.2.
|
4
|
-
# The point is for the user to remove these configuration records
|
5
|
-
# one by one as the offenses are removed from the code base.
|
6
|
-
# Note that changes in the inspected code, or installation of new
|
7
|
-
# versions of RuboCop, may require this file to be generated again.
|
8
|
-
|
9
|
-
# Offense count: 1
|
10
|
-
Lint/UriEscapeUnescape:
|
11
|
-
Exclude:
|
12
|
-
- 'lib/gitlab/client.rb'
|
13
|
-
|
14
|
-
# Offense count: 5
|
15
|
-
Metrics/AbcSize:
|
16
|
-
Max: 34
|
17
|
-
|
18
|
-
# Offense count: 4
|
19
|
-
Metrics/CyclomaticComplexity:
|
20
|
-
Max: 14
|
21
|
-
|
22
|
-
# Offense count: 10
|
23
|
-
# Configuration parameters: CountComments, ExcludedMethods.
|
24
|
-
Metrics/MethodLength:
|
25
|
-
Max: 34
|
26
|
-
|
27
|
-
# Offense count: 2
|
28
|
-
# Configuration parameters: CountComments.
|
29
|
-
Metrics/ModuleLength:
|
30
|
-
Max: 165
|
31
|
-
|
32
|
-
# Offense count: 2
|
33
|
-
# Configuration parameters: CountKeywordArgs.
|
34
|
-
Metrics/ParameterLists:
|
35
|
-
Max: 6
|
36
|
-
|
37
|
-
# Offense count: 1
|
38
|
-
Metrics/PerceivedComplexity:
|
39
|
-
Max: 10
|
40
|
-
|
41
|
-
# Offense count: 1
|
42
|
-
# Cop supports --auto-correct.
|
43
|
-
# Configuration parameters: AutoCorrect.
|
44
|
-
Security/JSONLoad:
|
45
|
-
Exclude:
|
46
|
-
- 'lib/gitlab/request.rb'
|
data/CONTRIBUTING.md
DELETED
@@ -1,195 +0,0 @@
|
|
1
|
-
# Contributing to Gitlab
|
2
|
-
|
3
|
-
Please take a moment to review this document in order to make the contribution
|
4
|
-
process easy and effective for everyone involved!
|
5
|
-
|
6
|
-
## Using the issue tracker
|
7
|
-
|
8
|
-
You can use the issues tracker for:
|
9
|
-
|
10
|
-
* [bug reports](#bug-reports)
|
11
|
-
* [feature requests](#feature-requests)
|
12
|
-
* [submitting pull requests](#pull-requests)
|
13
|
-
|
14
|
-
Use [Stackoverflow](http://stackoverflow.com/) for questions and personal support requests.
|
15
|
-
|
16
|
-
## Bug reports
|
17
|
-
|
18
|
-
A bug is a _demonstrable problem_ that is caused by the code in the repository.
|
19
|
-
Good bug reports are extremely helpful - thank you!
|
20
|
-
|
21
|
-
Guidelines for bug reports:
|
22
|
-
|
23
|
-
1. **Use the GitHub issue search** — check if the issue has already been
|
24
|
-
reported.
|
25
|
-
|
26
|
-
2. **Check if the issue has been fixed** — try to reproduce it using the
|
27
|
-
`master` branch in the repository.
|
28
|
-
|
29
|
-
3. **Isolate and report the problem** — ideally create a reduced test
|
30
|
-
case.
|
31
|
-
|
32
|
-
Please try to be as detailed as possible in your report. Include information about
|
33
|
-
your Ruby, Gitlab client and GitLab instance versions. Please provide steps to
|
34
|
-
reproduce the issue as well as the outcome you were expecting! All these details
|
35
|
-
will help developers to fix any potential bugs.
|
36
|
-
|
37
|
-
Example:
|
38
|
-
|
39
|
-
> Short and descriptive example bug report title
|
40
|
-
>
|
41
|
-
> A summary of the issue and the environment in which it occurs. If suitable,
|
42
|
-
> include the steps required to reproduce the bug.
|
43
|
-
>
|
44
|
-
> 1. This is the first step
|
45
|
-
> 2. This is the second step
|
46
|
-
> 3. Further steps, etc.
|
47
|
-
>
|
48
|
-
> Any other information you want to share that is relevant to the issue being
|
49
|
-
> reported. This might include the lines of code that you have identified as
|
50
|
-
> causing the bug, and potential solutions (and your opinions on their
|
51
|
-
> merits).
|
52
|
-
|
53
|
-
## Feature requests
|
54
|
-
|
55
|
-
Feature requests are welcome. But take a moment to find out whether your idea
|
56
|
-
fits with the scope and aims of the project. It's up to *you* to make a strong
|
57
|
-
case to convince the community of the merits of this feature.
|
58
|
-
Please provide as much detail and context as possible.
|
59
|
-
|
60
|
-
## Contributing Documentation
|
61
|
-
|
62
|
-
Code documentation has a special convention: it uses [YARD](http://yardoc.org/)
|
63
|
-
formatting and the first paragraph is considered to be a short summary.
|
64
|
-
|
65
|
-
For methods say what it will do. For example write something like:
|
66
|
-
|
67
|
-
```ruby
|
68
|
-
# Reverses the contents of a String or IO object.
|
69
|
-
#
|
70
|
-
# @param [String, #read] contents the contents to reverse
|
71
|
-
# @return [String] the contents reversed lexically
|
72
|
-
def reverse(contents)
|
73
|
-
contents = contents.read if contents.respond_to? :read
|
74
|
-
contents.reverse
|
75
|
-
end
|
76
|
-
```
|
77
|
-
|
78
|
-
For classes, modules say what it is. For example write something like:
|
79
|
-
|
80
|
-
```ruby
|
81
|
-
# Defines methods related to groups.
|
82
|
-
module Groups
|
83
|
-
```
|
84
|
-
|
85
|
-
Keep in mind that the documentation notes might show up in a summary somewhere,
|
86
|
-
long texts in the documentation notes create very ugly summaries. As a rule of thumb
|
87
|
-
anything longer than 80 characters is too long.
|
88
|
-
|
89
|
-
Try to keep unnecessary details out of the first paragraph, it's only there to
|
90
|
-
give a user a quick idea of what the documented "thing" does/is. The rest of the
|
91
|
-
documentation notes can contain the details, for example parameters and what
|
92
|
-
is returned.
|
93
|
-
|
94
|
-
If possible include examples. For example:
|
95
|
-
|
96
|
-
```ruby
|
97
|
-
# Gets information about a project.
|
98
|
-
#
|
99
|
-
# @example
|
100
|
-
# Gitlab.project(3)
|
101
|
-
# Gitlab.project('gitlab')
|
102
|
-
#
|
103
|
-
# @param [Integer, String] id The ID or name of a project.
|
104
|
-
# @return [Gitlab::ObjectifiedHash]
|
105
|
-
def project(id)
|
106
|
-
```
|
107
|
-
|
108
|
-
This makes it easy to test the examples so that they don't go stale and examples
|
109
|
-
are often a great help in explaining what a method does.
|
110
|
-
|
111
|
-
## Pull requests
|
112
|
-
|
113
|
-
Good pull requests - patches, improvements, new features - are a fantastic
|
114
|
-
help. They should remain focused in scope and avoid containing unrelated
|
115
|
-
commits.
|
116
|
-
|
117
|
-
**IMPORTANT**: By submitting a patch, you agree that your work will be
|
118
|
-
licensed under the license used by the project.
|
119
|
-
|
120
|
-
If you have any large pull request in mind (e.g. implementing features,
|
121
|
-
refactoring code, etc), **please ask first** otherwise you risk spending
|
122
|
-
a lot of time working on something that the project's developers might
|
123
|
-
not want to merge into the project.
|
124
|
-
|
125
|
-
Please adhere to the coding conventions in the project (indentation,
|
126
|
-
accurate comments, etc.) and don't forget to add your own tests and
|
127
|
-
documentation. When working with git, we recommend the following process
|
128
|
-
in order to craft an excellent pull request:
|
129
|
-
|
130
|
-
1. [Fork](https://help.github.com/articles/fork-a-repo/) the project, clone your fork,
|
131
|
-
and configure the remotes:
|
132
|
-
|
133
|
-
```sh
|
134
|
-
# Clone your fork of the repo into the current directory
|
135
|
-
git clone https://github.com/<your-username>/gitlab
|
136
|
-
# Navigate to the newly cloned directory
|
137
|
-
cd gitlab
|
138
|
-
# Assign the original repo to a remote called "upstream"
|
139
|
-
git remote add upstream https://github.com/NARKOZ/gitlab
|
140
|
-
```
|
141
|
-
|
142
|
-
2. If you cloned a while ago, get the latest changes from upstream:
|
143
|
-
|
144
|
-
```bash
|
145
|
-
git checkout master
|
146
|
-
git pull upstream master
|
147
|
-
```
|
148
|
-
|
149
|
-
3. Create a new topic branch (off of `master`) to contain your feature, change,
|
150
|
-
or fix.
|
151
|
-
|
152
|
-
**IMPORTANT**: Making changes in `master` is discouraged. You should always
|
153
|
-
keep your local `master` in sync with upstream `master` and make your
|
154
|
-
changes in topic branches.
|
155
|
-
|
156
|
-
```sh
|
157
|
-
git checkout -b <topic-branch-name>
|
158
|
-
```
|
159
|
-
|
160
|
-
4. Commit your changes in logical chunks. Keep your commit messages organized,
|
161
|
-
with a short description in the first line and more detailed information on
|
162
|
-
the following lines. Feel free to use Git's
|
163
|
-
[interactive rebase](https://help.github.com/articles/about-git-rebase/)
|
164
|
-
feature to tidy up your commits before making them public.
|
165
|
-
|
166
|
-
5. Make sure all the tests are still passing.
|
167
|
-
|
168
|
-
```sh
|
169
|
-
rake
|
170
|
-
```
|
171
|
-
|
172
|
-
6. Push your topic branch up to your fork:
|
173
|
-
|
174
|
-
```sh
|
175
|
-
git push origin <topic-branch-name>
|
176
|
-
```
|
177
|
-
|
178
|
-
7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
|
179
|
-
with a clear title and description.
|
180
|
-
|
181
|
-
8. If you haven't updated your pull request for a while, you should consider
|
182
|
-
rebasing on master and resolving any conflicts.
|
183
|
-
|
184
|
-
**IMPORTANT**: _Never ever_ merge upstream `master` into your branches. You
|
185
|
-
should always `git rebase` on `master` to bring your changes up to date when
|
186
|
-
necessary.
|
187
|
-
|
188
|
-
```sh
|
189
|
-
git checkout master
|
190
|
-
git pull upstream master
|
191
|
-
git checkout <your-topic-branch>
|
192
|
-
git rebase master
|
193
|
-
```
|
194
|
-
|
195
|
-
Thank you for your contributions!
|