git-duet 0.3.0 → 0.4.0

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.
@@ -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: