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