git-review 0.7.3 → 0.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/git-review.rb +34 -29
- metadata +4 -4
data/lib/git-review.rb
CHANGED
@@ -100,10 +100,39 @@ class GitReview
|
|
100
100
|
puts 'Successfully closed request.' unless request_exists?(@pending_request['number'])
|
101
101
|
end
|
102
102
|
|
103
|
+
# Prepare local repository to create a new request.
|
104
|
+
# Sets @local_branch.
|
105
|
+
def prepare
|
106
|
+
# People should work on local branches, but especially for single commit changes,
|
107
|
+
# more often than not, they don't. Therefore we create a branch for them,
|
108
|
+
# to be able to use code review the way it is intended.
|
109
|
+
if source_branch == target_branch
|
110
|
+
# Unless a branch name is already provided, ask for one.
|
111
|
+
if (branch_name = @args.shift).nil?
|
112
|
+
puts 'Please provide a name for the branch:'
|
113
|
+
branch_name = gets.chomp.gsub(/\W+/, '_').downcase
|
114
|
+
end
|
115
|
+
# Create the new branch (as a copy of the current one).
|
116
|
+
@local_branch = "review_#{Time.now.strftime("%y%m%d")}_#{branch_name}"
|
117
|
+
git_call "checkout -b #{@local_branch}"
|
118
|
+
if source_branch == @local_branch
|
119
|
+
# Go back to master and get rid of pending commits (as these are now on the new branch).
|
120
|
+
git_call "checkout #{target_branch}"
|
121
|
+
git_call "reset --hard origin/#{target_branch}"
|
122
|
+
git_call "checkout #{@local_branch}"
|
123
|
+
end
|
124
|
+
else
|
125
|
+
@local_branch = source_branch
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
103
129
|
# Create a new request.
|
104
130
|
# TODO: Support creating requests to other repositories and branches (like the original repo, this has been forked from).
|
105
131
|
def create
|
132
|
+
# Prepare @local_branch.
|
106
133
|
prepare
|
134
|
+
# Push latest commits to the remote branch (and by that, create it if necessary).
|
135
|
+
git_call "push --set-upstream origin #{@local_branch}"
|
107
136
|
# Gather information.
|
108
137
|
last_request_id = @pending_requests.collect{|req| req['number'] }.sort.last.to_i
|
109
138
|
title = "[Review] Request from '#{git_config['github.login']}' @ '#{source}'"
|
@@ -160,6 +189,7 @@ class GitReview
|
|
160
189
|
puts ' checkout <number> Checkout a specified request\'s changes to your local repository.'
|
161
190
|
puts ' merge <number> Accept a specified request by merging it into master.'
|
162
191
|
puts ' close <number> Close a specified request.'
|
192
|
+
puts ' prepare Creates a new local branch for a request.'
|
163
193
|
puts ' create Create a new request.'
|
164
194
|
end
|
165
195
|
|
@@ -167,7 +197,8 @@ class GitReview
|
|
167
197
|
def request_exists?(request_id = nil)
|
168
198
|
# NOTE: If request_id is set explicitly we might need to update to get the
|
169
199
|
# latest changes from GitHub, as this is called from within another method.
|
170
|
-
|
200
|
+
automated = !request_id.nil?
|
201
|
+
update if automated
|
171
202
|
request_id ||= @args.shift.to_i
|
172
203
|
if request_id == 0
|
173
204
|
puts 'Please specify a valid ID.'
|
@@ -175,7 +206,8 @@ class GitReview
|
|
175
206
|
end
|
176
207
|
@pending_request = @pending_requests.find{ |req| req['number'] == request_id }
|
177
208
|
if @pending_request.nil?
|
178
|
-
|
209
|
+
# No output for automated checks.
|
210
|
+
puts "Request '#{request_id}' does not exist." unless automated
|
179
211
|
return false
|
180
212
|
end
|
181
213
|
true
|
@@ -194,33 +226,6 @@ class GitReview
|
|
194
226
|
end
|
195
227
|
end
|
196
228
|
|
197
|
-
# Get local and remote branches ready to create a new request.
|
198
|
-
def prepare
|
199
|
-
# People should work on local branches, but especially for single commit changes,
|
200
|
-
# more often than not, they don't. Therefore we create a branch for them,
|
201
|
-
# to be able to use code review the way it is intended.
|
202
|
-
if source_branch == target_branch
|
203
|
-
# Unless a branch name is already provided, ask for one.
|
204
|
-
if (branch_name = @args.shift).nil?
|
205
|
-
puts 'Please provide a name for the branch:'
|
206
|
-
branch_name = gets.chomp.gsub(/\W+/, '_').downcase
|
207
|
-
end
|
208
|
-
# Create the new branch (as a copy of the current one).
|
209
|
-
local_branch = "review_#{Time.now.strftime("%y%m%d")}_#{branch_name}"
|
210
|
-
git_call "checkout -b #{local_branch}"
|
211
|
-
if source_branch == local_branch
|
212
|
-
# Go back to master and get rid of pending commits (as these are now on the new branch).
|
213
|
-
git_call "checkout #{target_branch}"
|
214
|
-
git_call "reset --hard origin/#{target_branch}"
|
215
|
-
git_call "checkout #{local_branch}"
|
216
|
-
end
|
217
|
-
else
|
218
|
-
local_branch = source_branch
|
219
|
-
end
|
220
|
-
# Push latest commits to the remote branch (and by that, create it if necessary).
|
221
|
-
git_call "push --set-upstream origin #{local_branch}"
|
222
|
-
end
|
223
|
-
|
224
229
|
# System call to 'git'.
|
225
230
|
def git_call(command, verbose = debug_mode)
|
226
231
|
if verbose
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-review
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 0.7.
|
9
|
+
- 6
|
10
|
+
version: 0.7.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dominik Bamberger, Cristian Messel
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-12-14 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|