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.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +6 -0
- data/.ruby-version +1 -1
- data/Gemfile +3 -1
- data/README.md +3 -2
- data/bin/git-dci +4 -0
- data/git-duet.gemspec +1 -0
- data/lib/git/duet/author_mapper.rb +67 -61
- data/lib/git/duet/cli.rb +100 -94
- data/lib/git/duet/command_methods.rb +112 -106
- data/lib/git/duet/commit_command.rb +61 -57
- data/lib/git/duet/duet_command.rb +52 -48
- data/lib/git/duet/install_hook_command.rb +29 -25
- data/lib/git/duet/pre_commit_command.rb +43 -38
- data/lib/git/duet/solo_command.rb +52 -48
- data/lib/git/duet/version.rb +1 -1
- data/spec/integration/end_to_end_spec.rb +77 -59
- data/spec/lib/git/duet/author_mapper_spec.rb +15 -13
- data/spec/lib/git/duet/command_methods_spec.rb +2 -2
- data/spec/lib/git/duet/solo_command_spec.rb +2 -2
- metadata +40 -39
data/lib/git/duet/version.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
115
|
+
sh('git solo jd -q')
|
102
116
|
end
|
103
117
|
|
104
118
|
it 'sets the git user name' do
|
105
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
158
|
-
|
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
|
-
|
169
|
-
|
170
|
-
|
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
|
-
|
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
|
-
|
193
|
-
|
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
|
-
|
199
|
-
|
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
|
-
|
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
|
-
|
213
|
-
|
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
|
-
|
219
|
-
|
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
|
-
|
245
|
+
sh('git duet jd fb -q')
|
229
246
|
end
|
230
247
|
|
231
248
|
it 'sets the git user name' do
|
232
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
260
|
-
|
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
|
-
|
266
|
-
|
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
|
-
|
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
|
-
|
281
|
-
|
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
|
286
|
-
|
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
|
-
|
293
|
-
@latest_sha1 =
|
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
|
-
|
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
|
-
|
307
|
-
|
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
|
-
|
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
|
-
|
321
|
-
|
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
|
-
|
327
|
-
|
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
|
-
|
333
|
-
|
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
|
-
|
339
|
-
@latest_sha1 =
|
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
|
-
|
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
|
-
|
353
|
-
|
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(
|
106
|
-
|
107
|
-
'
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
'
|
114
|
-
|
115
|
-
|
116
|
-
'
|
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.
|
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-
|
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:
|
176
|
+
rubygems_version: 2.2.2
|
176
177
|
signing_key:
|
177
|
-
specification_version:
|
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:
|