git-duet 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,7 +3,7 @@
3
3
  unless defined?(Git::Duet::VERSION)
4
4
  module Git
5
5
  module Duet
6
- VERSION = '0.3.0'
6
+ VERSION = '0.4.0'
7
7
  end
8
8
  end
9
9
  end
@@ -1,5 +1,6 @@
1
1
  # vim:fileencoding=utf-8
2
2
  require 'tmpdir'
3
+ require 'posix-spawn' unless RUBY_PLATFORM == 'java'
3
4
 
4
5
  describe 'git-duet end to end', integration: true do
5
6
  EMAIL_LOOKUP_SCRIPT = <<-EOF.gsub(/^ /, '')
@@ -11,9 +12,22 @@ describe 'git-duet end to end', integration: true do
11
12
  puts addr
12
13
  EOF
13
14
 
15
+ @capture_status = nil
16
+
17
+ def sh(cmd)
18
+ return `#{cmd}` if RUBY_PLATFORM == 'java'
19
+
20
+ pid, input, output, _ = POSIX::Spawn.popen4(cmd, err: '/dev/null')
21
+ input.close
22
+ @capture_status = Process.waitpid2(pid).last
23
+ output.read
24
+ ensure
25
+ output.close
26
+ end
27
+
14
28
  def install_hook
15
29
  Dir.chdir(@repo_dir) do
16
- `git duet-install-hook -q`
30
+ sh('git duet-install-hook -q')
17
31
  end
18
32
  end
19
33
 
@@ -26,7 +40,7 @@ describe 'git-duet end to end', integration: true do
26
40
  def make_an_edit
27
41
  Dir.chdir(@repo_dir) do
28
42
  File.open('file.txt', 'w') { |f| f.puts "foo-#{rand(100_000)}" }
29
- `git add file.txt`
43
+ sh('git add file.txt')
30
44
  end
31
45
  end
32
46
 
@@ -63,7 +77,7 @@ describe 'git-duet end to end', integration: true do
63
77
 
64
78
  @repo_dir = File.join(@tmpdir, 'foo')
65
79
  Dir.chdir(@tmpdir) do
66
- `git init #{@repo_dir}`
80
+ sh("git init #{@repo_dir}")
67
81
  end
68
82
  end
69
83
 
@@ -98,24 +112,24 @@ describe 'git-duet end to end', integration: true do
98
112
  context 'when setting the author via solo' do
99
113
  before :each do
100
114
  Dir.chdir(@repo_dir)
101
- `git solo jd -q`
115
+ sh('git solo jd -q')
102
116
  end
103
117
 
104
118
  it 'sets the git user name' do
105
- `git config user.name`.chomp.should == 'Jane Doe'
119
+ sh('git config user.name').chomp.should == 'Jane Doe'
106
120
  end
107
121
 
108
122
  it 'sets the git user email' do
109
- `git config user.email`.chomp.should == 'jane@hamsters.biz.local'
123
+ sh('git config user.email').chomp.should == 'jane@hamsters.biz.local'
110
124
  end
111
125
 
112
126
  it 'caches the git user name as author name' do
113
- `git config #{Git::Duet::Config.namespace}.git-author-name`.chomp
127
+ sh("git config #{Git::Duet::Config.namespace}.git-author-name").chomp
114
128
  .should == 'Jane Doe'
115
129
  end
116
130
 
117
131
  it 'caches the git user email as author email' do
118
- `git config #{Git::Duet::Config.namespace}.git-author-email`.chomp
132
+ sh("git config #{Git::Duet::Config.namespace}.git-author-email").chomp
119
133
  .should == 'jane@hamsters.biz.local'
120
134
  end
121
135
  end
@@ -133,11 +147,11 @@ describe 'git-duet end to end', integration: true do
133
147
  context 'when setting the author via solo' do
134
148
  before :each do
135
149
  Dir.chdir(@repo_dir)
136
- `git solo jd -q`
150
+ sh('git solo jd -q')
137
151
  end
138
152
 
139
153
  it 'sets the author email given by the external email lookup' do
140
- `git config #{Git::Duet::Config.namespace}.git-author-email`.chomp
154
+ sh("git config #{Git::Duet::Config.namespace}.git-author-email").chomp
141
155
  .should == 'jane_doe@lookie.me.local'
142
156
  end
143
157
  end
@@ -145,17 +159,18 @@ describe 'git-duet end to end', integration: true do
145
159
  context 'when setting author and committer via duet' do
146
160
  before :each do
147
161
  Dir.chdir(@repo_dir)
148
- `git duet jd fb -q`
162
+ sh('git duet jd fb -q')
149
163
  end
150
164
 
151
165
  it 'sets the author email given by the external email lookup' do
152
- `git config #{Git::Duet::Config.namespace}.git-author-email`.chomp
166
+ sh("git config #{Git::Duet::Config.namespace}.git-author-email").chomp
153
167
  .should == 'jane_doe@lookie.me.local'
154
168
  end
155
169
 
156
170
  it 'sets the committer email given by the external email lookup' do
157
- `git config #{Git::Duet::Config.namespace}.git-committer-email`.chomp
158
- .should == 'fb9000@dalek.info.local'
171
+ sh(
172
+ "git config #{Git::Duet::Config.namespace}.git-committer-email"
173
+ ).chomp.should == 'fb9000@dalek.info.local'
159
174
  end
160
175
  end
161
176
  end
@@ -165,9 +180,9 @@ describe 'git-duet end to end', integration: true do
165
180
  authors_cfg = YAML.load_file(@git_authors)
166
181
  @name_suffix = rand(9999)
167
182
  authors_cfg['email_template'] =
168
- %Q^<%= '' << author.split.first.downcase << ^ <<
169
- %Q^author.split.last[0].chr.downcase << ^ <<
170
- %Q^'#{@name_suffix}@mompopshop.local' %>^
183
+ "<%= '' << author.split.first.downcase << " \
184
+ "author.split.last[0].chr.downcase << " \
185
+ "'#{@name_suffix}@mompopshop.local' %>"
171
186
  File.open(@git_authors, 'w') do |f|
172
187
  f.puts YAML.dump(authors_cfg)
173
188
  end
@@ -184,19 +199,20 @@ describe 'git-duet end to end', integration: true do
184
199
  context 'after running git-solo' do
185
200
  before :each do
186
201
  Dir.chdir(@repo_dir)
187
- `git solo zp -q`
202
+ sh('git solo zp -q')
188
203
  make_an_edit
189
204
  end
190
205
 
191
206
  it 'uses the email template to construct the author email' do
192
- `git duet-commit -q -m 'Testing custom email template for author'`
193
- `git log -1 --format='%an <%ae>'`.chomp
207
+ sh("git duet-commit -q -m 'Testing custom email template for author'")
208
+ sh("git log -1 --format='%an <%ae>'").chomp
194
209
  .should == "Zubaz Pants <zubazp#{@name_suffix}@mompopshop.local>"
195
210
  end
196
211
 
197
212
  it 'uses the email template to construct the committer email' do
198
- `git duet-commit -q -m 'Testing custom email template for committer'`
199
- `git log -1 --format='%cn <%ce>'`.chomp
213
+ sh('git duet-commit -q ' \
214
+ "-m 'Testing custom email template for committer'")
215
+ sh("git log -1 --format='%cn <%ce>'").chomp
200
216
  .should == "Zubaz Pants <zubazp#{@name_suffix}@mompopshop.local>"
201
217
  end
202
218
  end
@@ -204,19 +220,20 @@ describe 'git-duet end to end', integration: true do
204
220
  context 'after running git-duet' do
205
221
  before :each do
206
222
  Dir.chdir(@repo_dir)
207
- `git duet zp fb -q`
223
+ sh('git duet zp fb -q')
208
224
  make_an_edit
209
225
  end
210
226
 
211
227
  it 'uses the email template to construct the author email' do
212
- `git duet-commit -q -m 'Testing custom email template for author'`
213
- `git log -1 --format='%an <%ae>'`.chomp
228
+ sh("git duet-commit -q -m 'Testing custom email template for author'")
229
+ sh("git log -1 --format='%an <%ae>'").chomp
214
230
  .should == "Zubaz Pants <zubazp#{@name_suffix}@mompopshop.local>"
215
231
  end
216
232
 
217
233
  it 'uses the email template to construct the committer email' do
218
- `git duet-commit -q -m 'Testing custom email template for committer'`
219
- `git log -1 --format='%cn <%ce>'`.chomp
234
+ sh('git duet-commit -q ' \
235
+ "-m 'Testing custom email template for committer'")
236
+ sh("git log -1 --format='%cn <%ce>'").chomp
220
237
  .should == "Frances Bar <francesb#{@name_suffix}@mompopshop.local>"
221
238
  end
222
239
  end
@@ -225,24 +242,24 @@ describe 'git-duet end to end', integration: true do
225
242
  context 'when setting author and committer via duet' do
226
243
  before :each do
227
244
  Dir.chdir(@repo_dir)
228
- `git duet jd fb -q`
245
+ sh('git duet jd fb -q')
229
246
  end
230
247
 
231
248
  it 'sets the git user name' do
232
- `git config user.name`.chomp.should == 'Jane Doe'
249
+ sh('git config user.name').chomp.should == 'Jane Doe'
233
250
  end
234
251
 
235
252
  it 'sets the git user email' do
236
- `git config user.email`.chomp.should == 'jane@hamsters.biz.local'
253
+ sh('git config user.email').chomp.should == 'jane@hamsters.biz.local'
237
254
  end
238
255
 
239
256
  it 'caches the git committer name' do
240
- `git config #{Git::Duet::Config.namespace}.git-committer-name`.chomp
257
+ sh("git config #{Git::Duet::Config.namespace}.git-committer-name").chomp
241
258
  .should == 'Frances Bar'
242
259
  end
243
260
 
244
261
  it 'caches the git committer email' do
245
- `git config #{Git::Duet::Config.namespace}.git-committer-email`.chomp
262
+ sh("git config #{Git::Duet::Config.namespace}.git-committer-email").chomp
246
263
  .should == 'f.bar@hamster.info.local'
247
264
  end
248
265
  end
@@ -251,19 +268,19 @@ describe 'git-duet end to end', integration: true do
251
268
  context 'after running git-duet' do
252
269
  before :each do
253
270
  Dir.chdir(@repo_dir)
254
- `git duet jd fb -q`
271
+ sh('git duet jd fb -q')
255
272
  make_an_edit
256
273
  end
257
274
 
258
275
  it 'lists the alpha of the duet as author in the log' do
259
- `git duet-commit -q -m 'Testing set of alpha as author'`
260
- `git log -1 --format='%an <%ae>'`.chomp
276
+ sh("git duet-commit -q -m 'Testing set of alpha as author'")
277
+ sh("git log -1 --format='%an <%ae>'").chomp
261
278
  .should == 'Jane Doe <jane@hamsters.biz.local>'
262
279
  end
263
280
 
264
281
  it 'lists the omega of the duet as committer in the log' do
265
- `git duet-commit -q -m 'Testing set of omega as committer'`
266
- `git log -1 --format='%cn <%ce>'`.chomp
282
+ sh("git duet-commit -q -m 'Testing set of omega as committer'")
283
+ sh("git log -1 --format='%cn <%ce>'").chomp
267
284
  .should == 'Frances Bar <f.bar@hamster.info.local>'
268
285
  end
269
286
 
@@ -271,29 +288,30 @@ describe 'git-duet end to end', integration: true do
271
288
  before do
272
289
  Dir.chdir(@repo_dir)
273
290
  %w(git-author-email git-author-name).each do |config|
274
- `git config --unset #{Git::Duet::Config.namespace}.#{config}`
291
+ sh("git config --unset #{Git::Duet::Config.namespace}.#{config}")
275
292
  end
276
293
  make_an_edit
277
294
  end
278
295
 
279
296
  it 'raises an error if committed without the -q option' do
280
- `git duet-commit -q -m 'Testing commit with no author'`
281
- $CHILD_STATUS.to_i.should_not == 0
297
+ sh("git duet-commit -q -m 'Testing commit with no author'")
298
+ @capture_status.to_i.should_not == 0
282
299
  end
283
300
 
284
301
  it 'fails to add a commit' do
285
- expect { `git duet-commit -q -m 'testing commit with no author'` }
286
- .to_not change { `git log -1 --format=%H`.chomp }
302
+ expect do
303
+ sh("git duet-commit -q -m 'testing commit with no author'")
304
+ end.to_not change { sh('git log -1 --format=%H').chomp }
287
305
  end
288
306
  end
289
307
 
290
308
  context 'with the pre-commit hook in place' do
291
309
  before :each do
292
- `git commit -m 'Committing before installing the hook'`
293
- @latest_sha1 = `git log -1 --format=%H`.chomp
310
+ sh("git commit -m 'Committing before installing the hook'")
311
+ @latest_sha1 = sh('git log -1 --format=%H').chomp
294
312
  make_an_edit
295
313
  install_hook
296
- `git config --unset-all #{Git::Duet::Config.namespace}.mtime`
314
+ sh("git config --unset-all #{Git::Duet::Config.namespace}.mtime")
297
315
  ENV['GIT_DUET_QUIET'] = '1'
298
316
  end
299
317
 
@@ -303,8 +321,8 @@ describe 'git-duet end to end', integration: true do
303
321
  end
304
322
 
305
323
  it 'fires the hook and reject the commit' do
306
- `git duet-commit -q -m 'Testing hook firing'`
307
- `git log -1 --format=%H`.chomp.should == @latest_sha1
324
+ sh("git duet-commit -q -m 'Testing hook firing'")
325
+ sh('git log -1 --format=%H').chomp.should == @latest_sha1
308
326
  end
309
327
  end
310
328
  end
@@ -312,34 +330,34 @@ describe 'git-duet end to end', integration: true do
312
330
  context 'after running git-solo' do
313
331
  before :each do
314
332
  Dir.chdir(@repo_dir)
315
- `git solo jd -q`
333
+ sh('git solo jd -q')
316
334
  make_an_edit
317
335
  end
318
336
 
319
337
  it 'lists the soloist as author in the log' do
320
- `git duet-commit -m 'Testing set of soloist as author' 2>/dev/null`
321
- `git log -1 --format='%an <%ae>'`.chomp
338
+ sh("git duet-commit -m 'Testing set of soloist as author'")
339
+ sh("git log -1 --format='%an <%ae>'").chomp
322
340
  .should == 'Jane Doe <jane@hamsters.biz.local>'
323
341
  end
324
342
 
325
343
  it 'lists the soloist as committer in the log' do
326
- `git duet-commit -m 'Testing set of soloist as committer' 2>/dev/null`
327
- `git log -1 --format='%cn <%ce>'`.chomp
344
+ sh("git duet-commit -m 'Testing set of soloist as committer'")
345
+ sh("git log -1 --format='%cn <%ce>'").chomp
328
346
  .should == 'Jane Doe <jane@hamsters.biz.local>'
329
347
  end
330
348
 
331
349
  it 'does not include "Signed-off-by" in the commit message' do
332
- `git duet-commit -m 'Testing omitting signoff' 2>/dev/null`
333
- `grep 'Signed-off-by' .git/COMMIT_EDITMSG`.chomp.should == ''
350
+ sh("git duet-commit -m 'Testing omitting signoff'")
351
+ sh("grep 'Signed-off-by' .git/COMMIT_EDITMSG").chomp.should == ''
334
352
  end
335
353
 
336
354
  context 'with the pre-commit hook in place' do
337
355
  before :each do
338
- `git commit -m 'Committing before installing the hook'`
339
- @latest_sha1 = `git log -1 --format=%H`.chomp
356
+ sh("git commit -m 'Committing before installing the hook'")
357
+ @latest_sha1 = sh('git log -1 --format=%H').chomp
340
358
  make_an_edit
341
359
  install_hook
342
- `git config --unset-all #{Git::Duet::Config.namespace}.mtime`
360
+ sh("git config --unset-all #{Git::Duet::Config.namespace}.mtime")
343
361
  ENV['GIT_DUET_QUIET'] = '1'
344
362
  end
345
363
 
@@ -349,8 +367,8 @@ describe 'git-duet end to end', integration: true do
349
367
  end
350
368
 
351
369
  it 'fires the hook and reject the commit' do
352
- `git duet-commit -q -m 'Testing hook firing'`
353
- `git log -1 --format=%H`.chomp.should == @latest_sha1
370
+ sh("git duet-commit -q -m 'Testing hook firing'")
371
+ sh('git log -1 --format=%H').chomp.should == @latest_sha1
354
372
  end
355
373
  end
356
374
  end
@@ -102,20 +102,22 @@ describe Git::Duet::AuthorMapper do
102
102
 
103
103
  context 'when using a `~/.pairs` config' do
104
104
  before :each do
105
- subject.stub(cfg: {
106
- 'pairs' => {
107
- 'jd' => 'Jane Doe; jdoe',
108
- 'fb' => 'Frances Bar; frances',
109
- 'qx' => 'Quincy Xavier; qx',
110
- 'hb' => 'Hampton Bones'
111
- },
112
- 'email' => {
113
- 'domain' => 'awesometown.me'
114
- },
115
- 'email_addresses' => {
116
- 'jd' => 'jane@awesome.biz'
105
+ subject.stub(
106
+ cfg: {
107
+ 'pairs' => {
108
+ 'jd' => 'Jane Doe; jdoe',
109
+ 'fb' => 'Frances Bar; frances',
110
+ 'qx' => 'Quincy Xavier; qx',
111
+ 'hb' => 'Hampton Bones'
112
+ },
113
+ 'email' => {
114
+ 'domain' => 'awesometown.me'
115
+ },
116
+ 'email_addresses' => {
117
+ 'jd' => 'jane@awesome.biz'
118
+ }
117
119
  }
118
- })
120
+ )
119
121
  end
120
122
 
121
123
  it 'maps initials to name -> email pairs' do
@@ -48,10 +48,10 @@ describe Git::Duet::CommandMethods do
48
48
 
49
49
  it 'writes env vars to a custom global git config tree' do
50
50
  subject.should_receive(:`)
51
- .with("git config --global #{Git::Duet::Config.namespace}" <<
51
+ .with("git config --global #{Git::Duet::Config.namespace}" \
52
52
  ".fizzle-baz 'awesome'")
53
53
  subject.should_receive(:`)
54
- .with("git config --global #{Git::Duet::Config.namespace}" <<
54
+ .with("git config --global #{Git::Duet::Config.namespace}" \
55
55
  ".oh-snarf 'mumra'")
56
56
  subject.should_receive(:`)
57
57
  .with(/^git config --global #{Git::Duet::Config.namespace}.mtime \d+/)
@@ -147,7 +147,7 @@ describe Git::Duet::SoloCommand do
147
147
  .namespace}.git-committer-email/
148
148
  )
149
149
  cmd.should_receive(:`)
150
- .with('git config --global --unset-all ' <<
150
+ .with('git config --global --unset-all ' \
151
151
  "#{Git::Duet::Config.namespace}.git-committer-name")
152
152
  cmd.execute!
153
153
  end
@@ -161,7 +161,7 @@ describe Git::Duet::SoloCommand do
161
161
  .namespace}.git-committer-name/
162
162
  )
163
163
  cmd.should_receive(:`)
164
- .with('git config --global --unset-all ' <<
164
+ .with('git config --global --unset-all ' \
165
165
  "#{Git::Duet::Config.namespace}.git-committer-email")
166
166
  cmd.execute!
167
167
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-duet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
5
- prerelease:
4
+ version: 0.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dan Buch
@@ -12,86 +11,90 @@ authors:
12
11
  autorequire:
13
12
  bindir: bin
14
13
  cert_chain: []
15
- date: 2014-02-23 00:00:00.000000000 Z
14
+ date: 2014-04-14 00:00:00.000000000 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
17
  name: rake
19
18
  requirement: !ruby/object:Gem::Requirement
20
- none: false
21
19
  requirements:
22
- - - ! '>='
20
+ - - ">="
23
21
  - !ruby/object:Gem::Version
24
22
  version: '0'
25
23
  type: :development
26
24
  prerelease: false
27
25
  version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
26
  requirements:
30
- - - ! '>='
27
+ - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: '0'
33
30
  - !ruby/object:Gem::Dependency
34
31
  name: rspec
35
32
  requirement: !ruby/object:Gem::Requirement
36
- none: false
37
33
  requirements:
38
- - - ! '>='
34
+ - - ">="
39
35
  - !ruby/object:Gem::Version
40
36
  version: '0'
41
37
  type: :development
42
38
  prerelease: false
43
39
  version_requirements: !ruby/object:Gem::Requirement
44
- none: false
45
40
  requirements:
46
- - - ! '>='
41
+ - - ">="
47
42
  - !ruby/object:Gem::Version
48
43
  version: '0'
49
44
  - !ruby/object:Gem::Dependency
50
45
  name: rubocop
51
46
  requirement: !ruby/object:Gem::Requirement
52
- none: false
53
47
  requirements:
54
- - - ! '>='
48
+ - - ">="
55
49
  - !ruby/object:Gem::Version
56
50
  version: '0'
57
51
  type: :development
58
52
  prerelease: false
59
53
  version_requirements: !ruby/object:Gem::Requirement
60
- none: false
61
54
  requirements:
62
- - - ! '>='
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: posix-spawn
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
63
70
  - !ruby/object:Gem::Version
64
71
  version: '0'
65
72
  - !ruby/object:Gem::Dependency
66
73
  name: pry
67
74
  requirement: !ruby/object:Gem::Requirement
68
- none: false
69
75
  requirements:
70
- - - ! '>='
76
+ - - ">="
71
77
  - !ruby/object:Gem::Version
72
78
  version: '0'
73
79
  type: :development
74
80
  prerelease: false
75
81
  version_requirements: !ruby/object:Gem::Requirement
76
- none: false
77
82
  requirements:
78
- - - ! '>='
83
+ - - ">="
79
84
  - !ruby/object:Gem::Version
80
85
  version: '0'
81
86
  - !ruby/object:Gem::Dependency
82
87
  name: simplecov
83
88
  requirement: !ruby/object:Gem::Requirement
84
- none: false
85
89
  requirements:
86
- - - ! '>='
90
+ - - ">="
87
91
  - !ruby/object:Gem::Version
88
92
  version: '0'
89
93
  type: :development
90
94
  prerelease: false
91
95
  version_requirements: !ruby/object:Gem::Requirement
92
- none: false
93
96
  requirements:
94
- - - ! '>='
97
+ - - ">="
95
98
  - !ruby/object:Gem::Version
96
99
  version: '0'
97
100
  description: Pair programming git identity thingy
@@ -101,6 +104,7 @@ email:
101
104
  - r.colton@modcloth.com
102
105
  - sp.mccoy@modcloth.com
103
106
  executables:
107
+ - git-dci
104
108
  - git-duet
105
109
  - git-duet-commit
106
110
  - git-duet-install-hook
@@ -109,17 +113,18 @@ executables:
109
113
  extensions: []
110
114
  extra_rdoc_files: []
111
115
  files:
112
- - .gitignore
113
- - .jrubyrc
114
- - .rspec
115
- - .rubocop.yml
116
- - .ruby-version
117
- - .simplecov
118
- - .travis.yml
116
+ - ".gitignore"
117
+ - ".jrubyrc"
118
+ - ".rspec"
119
+ - ".rubocop.yml"
120
+ - ".ruby-version"
121
+ - ".simplecov"
122
+ - ".travis.yml"
119
123
  - Gemfile
120
124
  - LICENSE
121
125
  - README.md
122
126
  - Rakefile
127
+ - bin/git-dci
123
128
  - bin/git-duet
124
129
  - bin/git-duet-commit
125
130
  - bin/git-duet-install-hook
@@ -151,30 +156,26 @@ files:
151
156
  homepage: https://github.com/modcloth/git-duet
152
157
  licenses:
153
158
  - MIT
159
+ metadata: {}
154
160
  post_install_message:
155
161
  rdoc_options: []
156
162
  require_paths:
157
163
  - lib
158
164
  required_ruby_version: !ruby/object:Gem::Requirement
159
- none: false
160
165
  requirements:
161
- - - ! '>='
166
+ - - ">="
162
167
  - !ruby/object:Gem::Version
163
168
  version: 1.9.3
164
169
  required_rubygems_version: !ruby/object:Gem::Requirement
165
- none: false
166
170
  requirements:
167
- - - ! '>='
171
+ - - ">="
168
172
  - !ruby/object:Gem::Version
169
173
  version: '0'
170
- segments:
171
- - 0
172
- hash: -3828941408143458487
173
174
  requirements: []
174
175
  rubyforge_project:
175
- rubygems_version: 1.8.23
176
+ rubygems_version: 2.2.2
176
177
  signing_key:
177
- specification_version: 3
178
+ specification_version: 4
178
179
  summary: Pair harmoniously! Decide who's driving. Commit along the way. Don't make
179
180
  a mess of the repository history.
180
181
  test_files: