git-topic 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/.rvmrc +1 -1
- data/.vimproject +3 -1
- data/Rakefile +9 -0
- data/VERSION +1 -1
- data/bin/git-topic +1 -1
- data/git-topic.gemspec +8 -6
- data/lib/git_topic/git.rb +58 -0
- data/lib/git_topic/naming.rb +150 -0
- data/lib/{git-topic.rb → git_topic.rb} +15 -175
- data/spec/{git-topic_spec.rb → git_topic_spec.rb} +11 -0
- data/spec/spec_helper.rb +17 -19
- metadata +9 -7
- /data/lib/{util.rb → core_ext.rb} +0 -0
data/.rspec
CHANGED
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm 1.9.2
|
1
|
+
rvm 1.9.2
|
data/.vimproject
CHANGED
data/Rakefile
CHANGED
@@ -3,6 +3,15 @@ require 'rake'
|
|
3
3
|
|
4
4
|
Dir[ 'lib/tasks/**/*' ].each{ |l| require l }
|
5
5
|
|
6
|
+
# TODO 1: cleanup specs (possibly have specs setup repos, or possibly tar up
|
7
|
+
# repos and extract them)
|
8
|
+
# TODO 2: topic abandon <topic>
|
9
|
+
# TODO 1: handle malformed args
|
10
|
+
# TODO 1: git-topic comment
|
11
|
+
# edit files & have the diffs pulled into notes?
|
12
|
+
|
13
|
+
# TODO 1: git work-on <topic> should kill review branch
|
14
|
+
|
6
15
|
|
7
16
|
begin
|
8
17
|
require 'jeweler'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
data/bin/git-topic
CHANGED
data/git-topic.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{git-topic}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["David J. Hamilton"]
|
12
|
-
s.date = %q{2010-07-
|
12
|
+
s.date = %q{2010-07-13}
|
13
13
|
s.default_executable = %q{git-topic}
|
14
14
|
s.description = %q{
|
15
15
|
gem command around reviewed topic branches. Supports workflow of the form:
|
@@ -57,9 +57,11 @@ Gem::Specification.new do |s|
|
|
57
57
|
"autotest/discover.rb",
|
58
58
|
"bin/git-topic",
|
59
59
|
"git-topic.gemspec",
|
60
|
-
"lib/
|
61
|
-
"lib/
|
62
|
-
"
|
60
|
+
"lib/core_ext.rb",
|
61
|
+
"lib/git_topic.rb",
|
62
|
+
"lib/git_topic/git.rb",
|
63
|
+
"lib/git_topic/naming.rb",
|
64
|
+
"spec/git_topic_spec.rb",
|
63
65
|
"spec/spec_helper.rb",
|
64
66
|
"spec/template/origin/HEAD",
|
65
67
|
"spec/template/origin/config",
|
@@ -102,7 +104,7 @@ Gem::Specification.new do |s|
|
|
102
104
|
s.summary = %q{git command around reviewed topic branches}
|
103
105
|
s.test_files = [
|
104
106
|
"spec/spec_helper.rb",
|
105
|
-
"spec/
|
107
|
+
"spec/git_topic_spec.rb"
|
106
108
|
]
|
107
109
|
|
108
110
|
if s.respond_to? :specification_version then
|
@@ -0,0 +1,58 @@
|
|
1
|
+
|
2
|
+
module GitTopic; end
|
3
|
+
module GitTopic::Git
|
4
|
+
module ClassMethods
|
5
|
+
|
6
|
+
protected
|
7
|
+
|
8
|
+
def working_tree_clean?
|
9
|
+
git [ "diff --quiet", "diff --quiet --cached" ]
|
10
|
+
$?.success?
|
11
|
+
end
|
12
|
+
|
13
|
+
def working_tree_dirty?
|
14
|
+
not working_tree_clean?
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def display_git_output?
|
19
|
+
@@display_git_output ||= false
|
20
|
+
end
|
21
|
+
|
22
|
+
def display_git_output!
|
23
|
+
@@display_git_output = true
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
def switch_to_branch( branch, tracking=nil )
|
28
|
+
if branches.include?( branch )
|
29
|
+
"checkout #{branch}"
|
30
|
+
else
|
31
|
+
"checkout -b #{branch} #{tracking}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def cmd_redirect_suffix( opts )
|
36
|
+
if !opts[:show] && !display_git_output?
|
37
|
+
"> /dev/null 2> /dev/null"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def git( cmds=[], opts={} )
|
42
|
+
cmds = [cmds] if cmds.is_a? String
|
43
|
+
redir = cmd_redirect_suffix( opts )
|
44
|
+
system cmds.map{|c| "git #{c} #{redir}"}.join( " && " )
|
45
|
+
end
|
46
|
+
|
47
|
+
def capture_git( cmds=[] )
|
48
|
+
cmds = [cmds] if cmds.is_a? String
|
49
|
+
redir = "2> /dev/null" unless display_git_output?
|
50
|
+
`#{cmds.map{|c| "git #{c} #{redir}"}.join( " && " )}`
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.included( base )
|
56
|
+
base.extend ClassMethods
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
|
2
|
+
module GitTopic; end
|
3
|
+
|
4
|
+
module GitTopic::Naming
|
5
|
+
module ClassMethods
|
6
|
+
|
7
|
+
protected
|
8
|
+
|
9
|
+
def backup_branch( topic )
|
10
|
+
"backup/#{user}/#{topic}"
|
11
|
+
end
|
12
|
+
|
13
|
+
def wip_branch( topic )
|
14
|
+
"wip/#{user}/#{topic}"
|
15
|
+
end
|
16
|
+
|
17
|
+
def rejected_branch( topic )
|
18
|
+
"rejected/#{user}/#{topic}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def review_branch( topic, user=user )
|
22
|
+
"review/#{user}/#{topic}"
|
23
|
+
end
|
24
|
+
|
25
|
+
def remote_rejected_branch( topic, user=user )
|
26
|
+
"rejected/#{user}/#{topic}"
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
def find_remote_review_branch( topic )
|
31
|
+
others_review_branches.find{|b| b.index topic}
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
def user_topic_name( branch )
|
36
|
+
if branch =~ %r{^origin}
|
37
|
+
branch =~ %r{^\S*?/\S*?/(\S*?)/(\S*)}
|
38
|
+
[$1, $2]
|
39
|
+
else
|
40
|
+
branch =~ %r{^\S*?/(\S*?)/(\S*)}
|
41
|
+
[$1, $2]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def topic_parts( spec )
|
46
|
+
p = {}
|
47
|
+
parts = spec.split( '/' )
|
48
|
+
case parts.size
|
49
|
+
when 2
|
50
|
+
p[:user], p[:topic] = parts
|
51
|
+
when 1
|
52
|
+
p[:topic] = parts.first
|
53
|
+
else
|
54
|
+
raise "Unexpected topic: #{spec}"
|
55
|
+
end
|
56
|
+
p
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
def user
|
61
|
+
@@user ||= (ENV['USER'] || `whoami`)
|
62
|
+
end
|
63
|
+
|
64
|
+
def current_topic
|
65
|
+
current_branch =~ %r{wip/\S*?/(\S*)}
|
66
|
+
$1
|
67
|
+
end
|
68
|
+
|
69
|
+
def current_branch
|
70
|
+
@@current_branch ||= capture_git( "branch --no-color" ).split( "\n" ).find do |b|
|
71
|
+
b =~ %r{^\*}
|
72
|
+
end[ 2..-1 ]
|
73
|
+
end
|
74
|
+
|
75
|
+
def branches
|
76
|
+
@@branches ||= capture_git( "branch --no-color" ).split( "\n" ).map{|b| b[2..-1]}
|
77
|
+
end
|
78
|
+
|
79
|
+
def remote_branches
|
80
|
+
@@remote_branches ||= capture_git( "branch -r --no-color" ).split( "\n" ).map{|b| b[2..-1]}
|
81
|
+
end
|
82
|
+
|
83
|
+
def others_review_branches
|
84
|
+
remote_branches.select do
|
85
|
+
|b| b =~ %r{/review/}
|
86
|
+
end.reject do |b|
|
87
|
+
b =~ %r{/#{user}/}
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def remote_branches_organized
|
92
|
+
@@remote_branches_organized ||= (
|
93
|
+
rb = remote_branches.dup
|
94
|
+
# Convert a bunch of remote branch names, like
|
95
|
+
# origin/HEAD -> origin/masterr
|
96
|
+
# origin/master
|
97
|
+
# origin/review/user1/topic1
|
98
|
+
# origin/something-else
|
99
|
+
# origin/rejected/user2/topic2
|
100
|
+
#
|
101
|
+
# Into a hash with keys 'review' and 'rejected' pointing to hashes of
|
102
|
+
# user-topic(s) pairs.
|
103
|
+
rb.map!{|s| s.gsub( /->.*/, '')}
|
104
|
+
rb.map!{|s| s.strip.split( '/' )}
|
105
|
+
namespace_ut = rb.group_by{|remote, namespace, user, topic| namespace if topic}
|
106
|
+
namespace_ut.reject!{|k,v| not %w(rejected review).include? k}
|
107
|
+
|
108
|
+
namespace_ut.each do |k,v|
|
109
|
+
v.each{|a| a.shift( 2 )}
|
110
|
+
v = namespace_ut[k] = v.group_by{|user, topic| user if topic}
|
111
|
+
v.each{|kk,vv| vv.each(&:shift); vv.flatten!}
|
112
|
+
end
|
113
|
+
|
114
|
+
namespace_ut.symbolize_keys!
|
115
|
+
namespace_ut[:review] ||= {}
|
116
|
+
namespace_ut[:rejected] ||= {}
|
117
|
+
|
118
|
+
namespace_ut[:review].reject!{|k,v| k == user}
|
119
|
+
namespace_ut
|
120
|
+
)
|
121
|
+
end
|
122
|
+
|
123
|
+
def oldest_review_branch
|
124
|
+
return nil if others_review_branches.empty?
|
125
|
+
|
126
|
+
commits_by_age = capture_git([
|
127
|
+
"log --date-order --reverse --pretty=format:%d",
|
128
|
+
"^origin/master #{others_review_branches.join( ' ' )}",
|
129
|
+
].join( " " )).split( "\n" )
|
130
|
+
|
131
|
+
commits_by_age.find do |ref|
|
132
|
+
# no ‘,’, i.e. only one ref matches the commit
|
133
|
+
ref.index( ',' ).nil?
|
134
|
+
end.strip[ 1..-2 ] # chomp the leading and trailing parenthesis
|
135
|
+
end
|
136
|
+
|
137
|
+
def oldest_review_user_topic
|
138
|
+
user_topic_name( oldest_review_branch )
|
139
|
+
end
|
140
|
+
|
141
|
+
def on_review_branch?
|
142
|
+
current_branch =~ %r{^review/}
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
146
|
+
|
147
|
+
def self.included( base )
|
148
|
+
base.extend ClassMethods
|
149
|
+
end
|
150
|
+
end
|
@@ -4,12 +4,18 @@
|
|
4
4
|
require 'active_support'
|
5
5
|
require 'active_support/core_ext/hash/keys'
|
6
6
|
|
7
|
-
require '
|
7
|
+
require 'core_ext'
|
8
|
+
require 'git_topic/git'
|
9
|
+
require 'git_topic/naming'
|
8
10
|
|
9
11
|
|
10
12
|
module GitTopic
|
13
|
+
include GitTopic::Git
|
14
|
+
include GitTopic::Naming
|
15
|
+
|
11
16
|
GlobalOptKeys = [ :verbose, :help, :verbose_given ]
|
12
17
|
|
18
|
+
|
13
19
|
class << self
|
14
20
|
|
15
21
|
# Switch to a branch for the given topic.
|
@@ -116,17 +122,21 @@ module GitTopic
|
|
116
122
|
if review_branches.empty?
|
117
123
|
puts "nothing to review."
|
118
124
|
return
|
125
|
+
else
|
126
|
+
user, topic = oldest_review_user_topic
|
119
127
|
end
|
120
|
-
|
121
|
-
user, topic = oldest_review_user_topic
|
122
128
|
else
|
123
|
-
|
129
|
+
p = topic_parts( spec )
|
130
|
+
user, topic = p[:user], p[:topic]
|
124
131
|
end
|
125
132
|
|
126
133
|
if remote_topic_branch = find_remote_review_branch( topic )
|
134
|
+
# Get the actual user/topic, e.g. to get the user if spec only specifies
|
135
|
+
# the topic.
|
136
|
+
real_user, real_topic = user_topic_name( remote_topic_branch )
|
127
137
|
git [
|
128
138
|
switch_to_branch(
|
129
|
-
review_branch(
|
139
|
+
review_branch( real_topic, real_user ),
|
130
140
|
remote_topic_branch )]
|
131
141
|
else
|
132
142
|
raise "No review topic found matching ‘#{spec}’"
|
@@ -200,176 +210,6 @@ module GitTopic
|
|
200
210
|
]
|
201
211
|
end
|
202
212
|
|
203
|
-
|
204
|
-
private
|
205
|
-
|
206
|
-
|
207
|
-
def backup_branch( topic )
|
208
|
-
"backup/#{user}/#{topic}"
|
209
|
-
end
|
210
|
-
|
211
|
-
def wip_branch( topic )
|
212
|
-
"wip/#{user}/#{topic}"
|
213
|
-
end
|
214
|
-
|
215
|
-
def rejected_branch( topic )
|
216
|
-
"rejected/#{user}/#{topic}"
|
217
|
-
end
|
218
|
-
|
219
|
-
def review_branch( topic, user=user )
|
220
|
-
"review/#{user}/#{topic}"
|
221
|
-
end
|
222
|
-
|
223
|
-
def remote_rejected_branch( topic, user=user )
|
224
|
-
"rejected/#{user}/#{topic}"
|
225
|
-
end
|
226
|
-
|
227
|
-
|
228
|
-
def find_remote_review_branch( topic )
|
229
|
-
others_review_branches.find{|b| b.index topic}
|
230
|
-
end
|
231
|
-
|
232
|
-
|
233
|
-
def user_topic_name( branch )
|
234
|
-
if branch =~ %r{^origin}
|
235
|
-
branch =~ %r{^\S*?/\S*?/(\S*?)/(\S*)}
|
236
|
-
[$1, $2]
|
237
|
-
else
|
238
|
-
branch =~ %r{^\S*?/(\S*?)/(\S*)}
|
239
|
-
[$1, $2]
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
|
-
|
244
|
-
def user
|
245
|
-
@@user ||= (ENV['USER'] || `whoami`)
|
246
|
-
end
|
247
|
-
|
248
|
-
def current_topic
|
249
|
-
current_branch =~ %r{wip/\S*?/(\S*)}
|
250
|
-
$1
|
251
|
-
end
|
252
|
-
|
253
|
-
def current_branch
|
254
|
-
@@current_branch ||= capture_git( "branch --no-color" ).split( "\n" ).find do |b|
|
255
|
-
b =~ %r{^\*}
|
256
|
-
end[ 2..-1 ]
|
257
|
-
end
|
258
|
-
|
259
|
-
def branches
|
260
|
-
@@branches ||= capture_git( "branch --no-color" ).split( "\n" ).map{|b| b[2..-1]}
|
261
|
-
end
|
262
|
-
|
263
|
-
def remote_branches
|
264
|
-
@@remote_branches ||= capture_git( "branch -r --no-color" ).split( "\n" ).map{|b| b[2..-1]}
|
265
|
-
end
|
266
|
-
|
267
|
-
def others_review_branches
|
268
|
-
remote_branches.select do
|
269
|
-
|b| b =~ %r{/review/}
|
270
|
-
end.reject do |b|
|
271
|
-
b =~ %r{/#{user}/}
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
def remote_branches_organized
|
276
|
-
@@remote_branches_organized ||= (
|
277
|
-
rb = remote_branches.dup
|
278
|
-
# Convert a bunch of remote branch names, like
|
279
|
-
# origin/HEAD -> origin/masterr
|
280
|
-
# origin/master
|
281
|
-
# origin/review/user1/topic1
|
282
|
-
# origin/something-else
|
283
|
-
# origin/rejected/user2/topic2
|
284
|
-
#
|
285
|
-
# Into a hash with keys 'review' and 'rejected' pointing to hashes of
|
286
|
-
# user-topic(s) pairs.
|
287
|
-
rb.map!{|s| s.gsub( /->.*/, '')}
|
288
|
-
rb.map!{|s| s.strip.split( '/' )}
|
289
|
-
namespace_ut = rb.group_by{|remote, namespace, user, topic| namespace if topic}
|
290
|
-
namespace_ut.reject!{|k,v| not %w(rejected review).include? k}
|
291
|
-
|
292
|
-
namespace_ut.each do |k,v|
|
293
|
-
v.each{|a| a.shift( 2 )}
|
294
|
-
v = namespace_ut[k] = v.group_by{|user, topic| user if topic}
|
295
|
-
v.each{|kk,vv| vv.each(&:shift); vv.flatten!}
|
296
|
-
end
|
297
|
-
|
298
|
-
namespace_ut.symbolize_keys!
|
299
|
-
namespace_ut[:review] ||= {}
|
300
|
-
namespace_ut[:rejected] ||= {}
|
301
|
-
|
302
|
-
namespace_ut[:review].reject!{|k,v| k == user}
|
303
|
-
namespace_ut
|
304
|
-
)
|
305
|
-
end
|
306
|
-
|
307
|
-
def oldest_review_branch
|
308
|
-
return nil if others_review_branches.empty?
|
309
|
-
|
310
|
-
commits_by_age = capture_git([
|
311
|
-
"log --date-order --reverse --pretty=format:%d",
|
312
|
-
"^origin/master #{others_review_branches.join( ' ' )}",
|
313
|
-
].join( " " )).split( "\n" )
|
314
|
-
|
315
|
-
commits_by_age.find do |ref|
|
316
|
-
# no ‘,’, i.e. only one ref matches the commit
|
317
|
-
ref.index( ',' ).nil?
|
318
|
-
end.strip[ 1..-2 ] # chomp the leading and trailing parenthesis
|
319
|
-
end
|
320
|
-
|
321
|
-
def oldest_review_user_topic
|
322
|
-
user_topic_name( oldest_review_branch )
|
323
|
-
end
|
324
|
-
|
325
|
-
def on_review_branch?
|
326
|
-
current_branch =~ %r{^review/}
|
327
|
-
end
|
328
|
-
|
329
|
-
def working_tree_clean?
|
330
|
-
git [ "diff --quiet", "diff --quiet --cached" ]
|
331
|
-
$?.success?
|
332
|
-
end
|
333
|
-
|
334
|
-
def working_tree_dirty?
|
335
|
-
not working_tree_clean?
|
336
|
-
end
|
337
|
-
|
338
|
-
|
339
|
-
def display_git_output?
|
340
|
-
@@display_git_output ||= false
|
341
|
-
end
|
342
|
-
|
343
|
-
def display_git_output!
|
344
|
-
@@display_git_output = true
|
345
|
-
end
|
346
|
-
|
347
|
-
|
348
|
-
def switch_to_branch( branch, tracking=nil )
|
349
|
-
if branches.include?( branch )
|
350
|
-
"checkout #{branch}"
|
351
|
-
else
|
352
|
-
"checkout -b #{branch} #{tracking}"
|
353
|
-
end
|
354
|
-
end
|
355
|
-
|
356
|
-
def cmd_redirect_suffix( opts )
|
357
|
-
if !opts[:show] && !display_git_output?
|
358
|
-
"> /dev/null 2> /dev/null"
|
359
|
-
end
|
360
|
-
end
|
361
|
-
|
362
|
-
def git( cmds=[], opts={} )
|
363
|
-
cmds = [cmds] if cmds.is_a? String
|
364
|
-
redir = cmd_redirect_suffix( opts )
|
365
|
-
system cmds.map{|c| "git #{c} #{redir}"}.join( " && " )
|
366
|
-
end
|
367
|
-
|
368
|
-
def capture_git( cmds=[] )
|
369
|
-
cmds = [cmds] if cmds.is_a? String
|
370
|
-
redir = "2> /dev/null" unless display_git_output?
|
371
|
-
`#{cmds.map{|c| "git #{c} #{redir}"}.join( " && " )}`
|
372
|
-
end
|
373
213
|
end
|
374
214
|
end
|
375
215
|
|
@@ -258,6 +258,17 @@ describe GitTopic do
|
|
258
258
|
git_branch_merge.should == 'refs/heads/review/user24601/ninja-basic'
|
259
259
|
end
|
260
260
|
|
261
|
+
it "
|
262
|
+
should accept only a topic arg (vice <user>/<topic>) when the topic is
|
263
|
+
unambiguous.
|
264
|
+
".oneline do
|
265
|
+
git_remote_branches.should include 'review/user24601/ninja-basic'
|
266
|
+
GitTopic.review( 'ninja-basic' )
|
267
|
+
git_branch.should == 'review/user24601/ninja-basic'
|
268
|
+
git_branch_remote.should == 'origin'
|
269
|
+
git_branch_merge.should == 'refs/heads/review/user24601/ninja-basic'
|
270
|
+
end
|
271
|
+
|
261
272
|
it "should error if an illegal topic is specified" do
|
262
273
|
lambda{ GitTopic.review( 'fakeuser/faketopic' )}.should raise_error
|
263
274
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,31 +1,29 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require '
|
2
|
+
require 'git_topic'
|
3
3
|
|
4
4
|
|
5
5
|
# Disable caching on GitTopic for specs since we're calling the methods directly
|
6
6
|
# rather than assuming atmoic invocations.
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
rv
|
16
|
-
end
|
17
|
-
alias_method_chain m.to_sym, :nocache
|
7
|
+
class << GitTopic
|
8
|
+
%w( current_branch remote_branches remote_branches_organized branches
|
9
|
+
).each do |m|
|
10
|
+
|
11
|
+
define_method( "#{m}_with_nocache" ) do
|
12
|
+
rv = send( "#{m}_without_nocache" )
|
13
|
+
GitTopic::Naming::ClassMethods.class_variable_set( "@@#{m}", nil )
|
14
|
+
rv
|
18
15
|
end
|
16
|
+
alias_method_chain m.to_sym, :nocache
|
17
|
+
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
19
|
+
def git_with_implicit_capture( cmds=[], opts={} )
|
20
|
+
if opts[:show]
|
21
|
+
puts capture_git( cmds )
|
22
|
+
else
|
23
|
+
git_without_implicit_capture( cmds, opts )
|
26
24
|
end
|
27
|
-
alias_method_chain :git, :implicit_capture
|
28
25
|
end
|
26
|
+
alias_method_chain :git, :implicit_capture
|
29
27
|
end
|
30
28
|
|
31
29
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 4
|
9
|
+
version: 0.1.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- David J. Hamilton
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-07-
|
17
|
+
date: 2010-07-13 00:00:00 -07:00
|
18
18
|
default_executable: git-topic
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -84,9 +84,11 @@ files:
|
|
84
84
|
- autotest/discover.rb
|
85
85
|
- bin/git-topic
|
86
86
|
- git-topic.gemspec
|
87
|
-
- lib/
|
88
|
-
- lib/
|
89
|
-
-
|
87
|
+
- lib/core_ext.rb
|
88
|
+
- lib/git_topic.rb
|
89
|
+
- lib/git_topic/git.rb
|
90
|
+
- lib/git_topic/naming.rb
|
91
|
+
- spec/git_topic_spec.rb
|
90
92
|
- spec/spec_helper.rb
|
91
93
|
- spec/template/origin/HEAD
|
92
94
|
- spec/template/origin/config
|
@@ -155,4 +157,4 @@ specification_version: 3
|
|
155
157
|
summary: git command around reviewed topic branches
|
156
158
|
test_files:
|
157
159
|
- spec/spec_helper.rb
|
158
|
-
- spec/
|
160
|
+
- spec/git_topic_spec.rb
|
File without changes
|