git-review 0.6.1 → 0.6.3

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.
Files changed (2) hide show
  1. data/lib/git-review.rb +38 -37
  2. metadata +4 -4
data/lib/git-review.rb CHANGED
@@ -11,14 +11,14 @@ class GitReview
11
11
  def help
12
12
  puts 'Usage: git review <command>'
13
13
  puts 'Manage review workflow for projects hosted on GitHub (using pull requests).'
14
- puts ''
14
+ puts
15
15
  puts 'Available commands:'
16
16
  puts ' list [--reverse] List all pending requests.'
17
17
  puts ' show <number> [--full] Show details of a single request.'
18
18
  puts ' browse <number> Open a browser window and review a specified request.'
19
19
  puts ' checkout <number> Checkout a specified request\'s changes to your local repository.'
20
- puts ' accept <number> Accept a specified request by merging it into master.'
21
- puts ' decline <number> Decline and close a specified request.'
20
+ puts ' merge <number> Accept a specified request by merging it into master.'
21
+ puts ' close <number> Close a specified request.'
22
22
  puts ' create Create a new request.'
23
23
  end
24
24
 
@@ -41,7 +41,7 @@ class GitReview
41
41
  return
42
42
  end
43
43
  puts "Pending requests for '#{source}'"
44
- puts 'ID Date Comments Title'
44
+ puts 'ID Updated Comments Title'
45
45
  puts output.compact
46
46
  end
47
47
 
@@ -55,15 +55,14 @@ class GitReview
55
55
  puts "Created : #{@pending_request['created_at']}"
56
56
  puts "Votes : #{@pending_request['votes']}"
57
57
  puts "Comments : #{@pending_request['comments']}"
58
- puts ''
58
+ puts
59
59
  puts "Title : #{@pending_request['title']}"
60
- puts "Body :"
61
- puts ''
60
+ puts 'Body :'
61
+ puts
62
62
  puts @pending_request['body']
63
- puts ''
63
+ puts
64
64
  puts '------------'
65
- puts ''
66
- puts "cmd: git diff #{option}HEAD...#{sha}"
65
+ puts
67
66
  puts git("diff --color=always #{option}HEAD...#{sha}")
68
67
  end
69
68
 
@@ -74,11 +73,17 @@ class GitReview
74
73
 
75
74
  # Checkout a specified request's changes to your local repository.
76
75
  def checkout
77
- git "co origin/#{@pending_request['head']['ref']}" if request_exists?
76
+ return unless request_exists?
77
+ puts 'Checking out changes to your local repository.'
78
+ puts 'To get back to your original state, just run:'
79
+ puts
80
+ puts ' git checkout master'
81
+ puts
82
+ git "checkout origin/#{@pending_request['head']['ref']}"
78
83
  end
79
84
 
80
85
  # Accept a specified request by merging it into master.
81
- def accept
86
+ def merge
82
87
  return unless request_exists?
83
88
  option = @args.shift
84
89
  unless @pending_request['head']['repository']
@@ -86,25 +91,28 @@ class GitReview
86
91
  user = @pending_request['head']['user']['login']
87
92
  url = @pending_request['patch_url']
88
93
  puts "Sorry, #{user} deleted the source repository, git-review doesn't support this."
89
- puts "You can manually patch your repo by running:"
94
+ puts 'You can manually patch your repo by running:'
90
95
  puts
91
96
  puts " curl #{url} | git am"
92
97
  puts
93
- puts "Tell the contributor not to do this."
98
+ puts 'Tell the contributor not to do this.'
94
99
  return false
95
100
  end
96
101
  message = "Accepting request and merging into '#{target}':\n\n"
97
102
  message += "#{@pending_request['title']}\n\n"
98
103
  message += "#{@pending_request['body']}\n\n"
99
- puts cmd = "git merge --no-ff #{option} -m '#{message}' #{@pending_request['head']['sha']}"
100
- exec(cmd)
104
+ exec_cmd = "merge --no-ff #{option} -m '#{message}' #{@pending_request['head']['sha']}"
105
+ puts
106
+ puts " git #{exec_cmd}"
107
+ puts
108
+ git(exec_cmd)
101
109
  end
102
110
 
103
- # Decline and close a specified request.
104
- def decline
111
+ # Close a specified request.
112
+ def close
105
113
  return unless request_exists?
106
114
  Octokit.post("issues/close/#{source_repo}/#{@pending_request['number']}")
107
- puts "Successfully declined request." unless request_exists?(@pending_request['number'])
115
+ puts 'Successfully closed request.' unless request_exists?(@pending_request['number'])
108
116
  end
109
117
 
110
118
  # Create a new request.
@@ -115,11 +123,11 @@ class GitReview
115
123
  last_request_id = @pending_requests.collect{|req| req['number'] }.sort.last.to_i
116
124
  title = "[Review] Request from '#{github_login}' @ '#{source}'"
117
125
  # TODO: Insert commit messages (that are not yet in master) into body (since this will be displayed inside the mail that is sent out).
118
- body = "You are requested to review the following changes:"
126
+ body = 'Please review the following changes:'
119
127
  # Create the actual pull request.
120
128
  Octokit.create_pull_request(target_repo, target_branch, source_branch, title, body)
121
129
  # Switch back to target_branch and check for success.
122
- git "co #{target_branch}"
130
+ git "commit #{target_branch}"
123
131
  update
124
132
  potential_new_request = @pending_requests.find{ |req| req['title'] == title }
125
133
  puts 'Successfully created new request.' if potential_new_request['number'] > last_request_id
@@ -161,7 +169,7 @@ class GitReview
161
169
  update unless request_id.nil?
162
170
  request_id ||= @args.shift.to_i
163
171
  if request_id == 0
164
- puts "Please specify a valid ID."
172
+ puts 'Please specify a valid ID.'
165
173
  return false
166
174
  end
167
175
  @pending_request = @pending_requests.find{ |req| req['number'] == request_id }
@@ -174,9 +182,7 @@ class GitReview
174
182
  @pending_requests = Octokit.pull_requests(source_repo)
175
183
  repos = @pending_requests.collect do |req|
176
184
  repo = req['head']['repository']
177
- # Check if fork and commits still exist.
178
- next if repo.nil? or not has_sha?(req['head']['sha'])
179
- "#{repo['owner']}/#{repo['name']}"
185
+ "#{repo['owner']}/#{repo['name']}" unless repo.nil?
180
186
  end
181
187
  host = URI.parse(github_endpoint).host
182
188
  repos.uniq.compact.each do |repo|
@@ -185,7 +191,7 @@ class GitReview
185
191
  end
186
192
 
187
193
  # System call to 'git'.
188
- def git(command, chomp=true)
194
+ def git(command, chomp = true)
189
195
  s = `git #{command}`
190
196
  s.chomp! if chomp
191
197
  s
@@ -228,13 +234,6 @@ class GitReview
228
234
  "#{target_repo}/#{target_branch}"
229
235
  end
230
236
 
231
- # Returns a boolean stating whether a specified commit exists.
232
- # TODO: Check if this is still necessary, since we don't cache anymore.
233
- def has_sha?(sha)
234
- git("show #{sha} 2>&1")
235
- $?.exitstatus == 0
236
- end
237
-
238
237
  # Returns a boolean stating whether a specified commit has already been merged.
239
238
  def merged?(sha)
240
239
  not git("rev-list #{sha} ^HEAD 2>&1").split("\n").size > 0
@@ -256,20 +255,21 @@ class GitReview
256
255
 
257
256
  # Get GitHub user name.
258
257
  def github_login
259
- git("config --get-all github.user")
258
+ git('config --get-all github.user')
260
259
  end
261
260
 
262
261
  # Get GitHub token.
263
262
  def github_token
264
- git("config --get-all github.token")
263
+ git('config --get-all github.token')
265
264
  end
266
265
 
267
266
  # Determine GitHub endpoint (defaults to 'https://github.com/').
268
267
  def github_endpoint
269
- host = git("config --get-all github.host")
268
+ host = git('config --get-all github.host')
270
269
  host.empty? ? 'https://github.com/' : host
271
270
  end
272
271
 
272
+ # Returns an array consisting of information on the user and the project.
273
273
  def repo_info
274
274
  # Read config_hash from local git config.
275
275
  config_hash = {}
@@ -281,7 +281,7 @@ class GitReview
281
281
  # Extract user and project name from GitHub URL.
282
282
  url = config_hash['remote.origin.url']
283
283
  user, project = github_user_and_project(url)
284
- # If there are no results yet, look for 'insteadof' substitutions in URL and try again.
284
+ # If there are no results yet, look for 'insteadof' substitutions in URL and try again.
285
285
  unless (user and project)
286
286
  short, base = github_insteadof_matching(config_hash, url)
287
287
  if short and base
@@ -292,6 +292,7 @@ class GitReview
292
292
  [user, project]
293
293
  end
294
294
 
295
+ # Looks for 'insteadof' substitutions in URL.
295
296
  def github_insteadof_matching(config_hash, url)
296
297
  first = config_hash.collect { |key,value|
297
298
  [value, /url\.(.*github\.com.*)\.insteadof/.match(key)]
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: 5
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 1
10
- version: 0.6.1
9
+ - 3
10
+ version: 0.6.3
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-07-18 00:00:00 +02:00
18
+ date: 2011-11-09 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency