git_multicast 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/git_multicast/adapters.rb +3 -1
- data/lib/git_multicast/cloner.rb +22 -4
- data/lib/git_multicast/output_formatter.rb +11 -8
- data/lib/git_multicast/version.rb +1 -1
- data/spec/fixtures/vcr_cassettes/clone_repos.yml +1694 -0
- data/spec/fixtures/vcr_cassettes/github_repo_parent.yml +1 -1
- data/spec/git_multicast/cloner_spec.rb +34 -39
- metadata +3 -2
@@ -74,6 +74,6 @@ http_interactions:
|
|
74
74
|
usefull ruby git hooks.","fork":true,"url":"https://api.github.com/repos/rranelli/ruby-git-hooks","forks_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/forks","keys_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/teams","hooks_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/hooks","issue_events_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/issues/events{/number}","events_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/events","assignees_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/assignees{/user}","branches_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/branches{/branch}","tags_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/tags","blobs_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/git/refs{/sha}","trees_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/statuses/{sha}","languages_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/languages","stargazers_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/stargazers","contributors_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/contributors","subscribers_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/subscribers","subscription_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/subscription","commits_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/commits{/sha}","git_commits_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/git/commits{/sha}","comments_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/comments{/number}","issue_comment_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/issues/comments/{number}","contents_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/contents/{+path}","compare_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/merges","archive_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/downloads","issues_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/issues{/number}","pulls_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/pulls{/number}","milestones_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/milestones{/number}","notifications_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/labels{/name}","releases_url":"https://api.github.com/repos/rranelli/ruby-git-hooks/releases{/id}","created_at":"2014-07-01T23:06:50Z","updated_at":"2014-08-19T23:55:53Z","pushed_at":"2014-08-21T22:53:32Z","git_url":"git://github.com/rranelli/ruby-git-hooks.git","ssh_url":"git@github.com:rranelli/ruby-git-hooks.git","clone_url":"https://github.com/rranelli/ruby-git-hooks.git","svn_url":"https://github.com/rranelli/ruby-git-hooks","homepage":null,"size":255,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master","parent":{"id":21166102,"name":"git-hooks","full_name":"stupied4ever/git-hooks","owner":{"login":"stupied4ever","id":535347,"avatar_url":"https://avatars.githubusercontent.com/u/535347?v=2","gravatar_id":"1eb9b500bbf85599f404c92417a450a4","url":"https://api.github.com/users/stupied4ever","html_url":"https://github.com/stupied4ever","followers_url":"https://api.github.com/users/stupied4ever/followers","following_url":"https://api.github.com/users/stupied4ever/following{/other_user}","gists_url":"https://api.github.com/users/stupied4ever/gists{/gist_id}","starred_url":"https://api.github.com/users/stupied4ever/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stupied4ever/subscriptions","organizations_url":"https://api.github.com/users/stupied4ever/orgs","repos_url":"https://api.github.com/users/stupied4ever/repos","events_url":"https://api.github.com/users/stupied4ever/events{/privacy}","received_events_url":"https://api.github.com/users/stupied4ever/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/stupied4ever/git-hooks","description":"Some
|
75
75
|
usefull ruby git hooks.","fork":false,"url":"https://api.github.com/repos/stupied4ever/git-hooks","forks_url":"https://api.github.com/repos/stupied4ever/git-hooks/forks","keys_url":"https://api.github.com/repos/stupied4ever/git-hooks/keys{/key_id}","collaborators_url":"https://api.github.com/repos/stupied4ever/git-hooks/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/stupied4ever/git-hooks/teams","hooks_url":"https://api.github.com/repos/stupied4ever/git-hooks/hooks","issue_events_url":"https://api.github.com/repos/stupied4ever/git-hooks/issues/events{/number}","events_url":"https://api.github.com/repos/stupied4ever/git-hooks/events","assignees_url":"https://api.github.com/repos/stupied4ever/git-hooks/assignees{/user}","branches_url":"https://api.github.com/repos/stupied4ever/git-hooks/branches{/branch}","tags_url":"https://api.github.com/repos/stupied4ever/git-hooks/tags","blobs_url":"https://api.github.com/repos/stupied4ever/git-hooks/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/stupied4ever/git-hooks/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/stupied4ever/git-hooks/git/refs{/sha}","trees_url":"https://api.github.com/repos/stupied4ever/git-hooks/git/trees{/sha}","statuses_url":"https://api.github.com/repos/stupied4ever/git-hooks/statuses/{sha}","languages_url":"https://api.github.com/repos/stupied4ever/git-hooks/languages","stargazers_url":"https://api.github.com/repos/stupied4ever/git-hooks/stargazers","contributors_url":"https://api.github.com/repos/stupied4ever/git-hooks/contributors","subscribers_url":"https://api.github.com/repos/stupied4ever/git-hooks/subscribers","subscription_url":"https://api.github.com/repos/stupied4ever/git-hooks/subscription","commits_url":"https://api.github.com/repos/stupied4ever/git-hooks/commits{/sha}","git_commits_url":"https://api.github.com/repos/stupied4ever/git-hooks/git/commits{/sha}","comments_url":"https://api.github.com/repos/stupied4ever/git-hooks/comments{/number}","issue_comment_url":"https://api.github.com/repos/stupied4ever/git-hooks/issues/comments/{number}","contents_url":"https://api.github.com/repos/stupied4ever/git-hooks/contents/{+path}","compare_url":"https://api.github.com/repos/stupied4ever/git-hooks/compare/{base}...{head}","merges_url":"https://api.github.com/repos/stupied4ever/git-hooks/merges","archive_url":"https://api.github.com/repos/stupied4ever/git-hooks/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/stupied4ever/git-hooks/downloads","issues_url":"https://api.github.com/repos/stupied4ever/git-hooks/issues{/number}","pulls_url":"https://api.github.com/repos/stupied4ever/git-hooks/pulls{/number}","milestones_url":"https://api.github.com/repos/stupied4ever/git-hooks/milestones{/number}","notifications_url":"https://api.github.com/repos/stupied4ever/git-hooks/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/stupied4ever/git-hooks/labels{/name}","releases_url":"https://api.github.com/repos/stupied4ever/git-hooks/releases{/id}","created_at":"2014-06-24T13:45:23Z","updated_at":"2014-09-03T14:37:40Z","pushed_at":"2014-09-04T17:06:59Z","git_url":"git://github.com/stupied4ever/git-hooks.git","ssh_url":"git@github.com:stupied4ever/git-hooks.git","clone_url":"https://github.com/stupied4ever/git-hooks.git","svn_url":"https://github.com/stupied4ever/git-hooks","homepage":null,"size":831,"stargazers_count":4,"watchers_count":4,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":1,"mirror_url":null,"open_issues_count":4,"forks":1,"open_issues":4,"watchers":4,"default_branch":"master"},"source":{"id":21166102,"name":"git-hooks","full_name":"stupied4ever/git-hooks","owner":{"login":"stupied4ever","id":535347,"avatar_url":"https://avatars.githubusercontent.com/u/535347?v=2","gravatar_id":"1eb9b500bbf85599f404c92417a450a4","url":"https://api.github.com/users/stupied4ever","html_url":"https://github.com/stupied4ever","followers_url":"https://api.github.com/users/stupied4ever/followers","following_url":"https://api.github.com/users/stupied4ever/following{/other_user}","gists_url":"https://api.github.com/users/stupied4ever/gists{/gist_id}","starred_url":"https://api.github.com/users/stupied4ever/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stupied4ever/subscriptions","organizations_url":"https://api.github.com/users/stupied4ever/orgs","repos_url":"https://api.github.com/users/stupied4ever/repos","events_url":"https://api.github.com/users/stupied4ever/events{/privacy}","received_events_url":"https://api.github.com/users/stupied4ever/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/stupied4ever/git-hooks","description":"Some
|
76
76
|
usefull ruby git hooks.","fork":false,"url":"https://api.github.com/repos/stupied4ever/git-hooks","forks_url":"https://api.github.com/repos/stupied4ever/git-hooks/forks","keys_url":"https://api.github.com/repos/stupied4ever/git-hooks/keys{/key_id}","collaborators_url":"https://api.github.com/repos/stupied4ever/git-hooks/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/stupied4ever/git-hooks/teams","hooks_url":"https://api.github.com/repos/stupied4ever/git-hooks/hooks","issue_events_url":"https://api.github.com/repos/stupied4ever/git-hooks/issues/events{/number}","events_url":"https://api.github.com/repos/stupied4ever/git-hooks/events","assignees_url":"https://api.github.com/repos/stupied4ever/git-hooks/assignees{/user}","branches_url":"https://api.github.com/repos/stupied4ever/git-hooks/branches{/branch}","tags_url":"https://api.github.com/repos/stupied4ever/git-hooks/tags","blobs_url":"https://api.github.com/repos/stupied4ever/git-hooks/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/stupied4ever/git-hooks/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/stupied4ever/git-hooks/git/refs{/sha}","trees_url":"https://api.github.com/repos/stupied4ever/git-hooks/git/trees{/sha}","statuses_url":"https://api.github.com/repos/stupied4ever/git-hooks/statuses/{sha}","languages_url":"https://api.github.com/repos/stupied4ever/git-hooks/languages","stargazers_url":"https://api.github.com/repos/stupied4ever/git-hooks/stargazers","contributors_url":"https://api.github.com/repos/stupied4ever/git-hooks/contributors","subscribers_url":"https://api.github.com/repos/stupied4ever/git-hooks/subscribers","subscription_url":"https://api.github.com/repos/stupied4ever/git-hooks/subscription","commits_url":"https://api.github.com/repos/stupied4ever/git-hooks/commits{/sha}","git_commits_url":"https://api.github.com/repos/stupied4ever/git-hooks/git/commits{/sha}","comments_url":"https://api.github.com/repos/stupied4ever/git-hooks/comments{/number}","issue_comment_url":"https://api.github.com/repos/stupied4ever/git-hooks/issues/comments/{number}","contents_url":"https://api.github.com/repos/stupied4ever/git-hooks/contents/{+path}","compare_url":"https://api.github.com/repos/stupied4ever/git-hooks/compare/{base}...{head}","merges_url":"https://api.github.com/repos/stupied4ever/git-hooks/merges","archive_url":"https://api.github.com/repos/stupied4ever/git-hooks/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/stupied4ever/git-hooks/downloads","issues_url":"https://api.github.com/repos/stupied4ever/git-hooks/issues{/number}","pulls_url":"https://api.github.com/repos/stupied4ever/git-hooks/pulls{/number}","milestones_url":"https://api.github.com/repos/stupied4ever/git-hooks/milestones{/number}","notifications_url":"https://api.github.com/repos/stupied4ever/git-hooks/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/stupied4ever/git-hooks/labels{/name}","releases_url":"https://api.github.com/repos/stupied4ever/git-hooks/releases{/id}","created_at":"2014-06-24T13:45:23Z","updated_at":"2014-09-03T14:37:40Z","pushed_at":"2014-09-04T17:06:59Z","git_url":"git://github.com/stupied4ever/git-hooks.git","ssh_url":"git@github.com:stupied4ever/git-hooks.git","clone_url":"https://github.com/stupied4ever/git-hooks.git","svn_url":"https://github.com/stupied4ever/git-hooks","homepage":null,"size":831,"stargazers_count":4,"watchers_count":4,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":1,"mirror_url":null,"open_issues_count":4,"forks":1,"open_issues":4,"watchers":4,"default_branch":"master"},"network_count":1,"subscribers_count":1}'
|
77
|
-
http_version:
|
77
|
+
http_version:
|
78
78
|
recorded_at: Wed, 10 Sep 2014 06:21:01 GMT
|
79
79
|
recorded_with: VCR 2.9.3
|
@@ -2,25 +2,23 @@ module GitMulticast
|
|
2
2
|
describe Cloner do
|
3
3
|
subject(:cloner) { described_class.new(username, dir) }
|
4
4
|
|
5
|
-
let(:username) { '
|
5
|
+
let(:username) { 'rranelli' }
|
6
6
|
let(:dir) { '/kifita/' }
|
7
7
|
|
8
|
-
let(:
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
fork: false,
|
14
|
-
name: 'foo')
|
15
|
-
end
|
16
|
-
let(:repos) { [repo] * 3 }
|
8
|
+
let(:repo_name) { 'git_multicast' }
|
9
|
+
|
10
|
+
let(:pipe) { IO.pipe }
|
11
|
+
let(:r) { pipe.first }
|
12
|
+
let(:w) { pipe[1] }
|
17
13
|
|
18
14
|
before do
|
19
15
|
allow(cloner).to receive(:spawn).and_return(nil)
|
20
|
-
allow(cloner).to receive(:waitall).and_return(
|
16
|
+
allow(cloner).to receive(:waitall).and_return(
|
17
|
+
[[nil, double(:success, success?: true)]] * 32
|
18
|
+
)
|
19
|
+
|
20
|
+
allow(IO).to receive(:pipe).and_return([r, w])
|
21
21
|
|
22
|
-
allow(RepositoryFetcher).to receive(:get_all_repos_from_user)
|
23
|
-
.and_return(repos)
|
24
22
|
allow(OutputFormatter).to receive(:format)
|
25
23
|
end
|
26
24
|
|
@@ -28,41 +26,38 @@ module GitMulticast
|
|
28
26
|
subject(:clone!) { cloner.clone! }
|
29
27
|
|
30
28
|
it 'spawns a clone job for each repo' do
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
clone!
|
35
|
-
end
|
36
|
-
|
37
|
-
context 'when repo is a fork'do
|
38
|
-
let(:parent_repo) do
|
39
|
-
double(:parent, ssh_url: 'git@hubgit.com:parent/repo')
|
40
|
-
end
|
41
|
-
|
42
|
-
before do
|
43
|
-
allow(RepositoryFetcher).to receive(
|
44
|
-
:get_repo_parent
|
45
|
-
).and_return(parent_repo)
|
29
|
+
VCR.use_cassette('clone_repos') do
|
30
|
+
expect(cloner).to receive(:spawn).exactly(32).times
|
46
31
|
|
47
|
-
|
32
|
+
clone!
|
48
33
|
end
|
34
|
+
end
|
49
35
|
|
50
|
-
|
51
|
-
|
52
|
-
|
36
|
+
it 'spawns a clone with the right parameters' do
|
37
|
+
VCR.use_cassette('clone_repos') do
|
38
|
+
expect(cloner).to receive(:spawn)
|
39
|
+
.with("git clone git@github.com:rranelli/#{repo_name}.git" \
|
40
|
+
' /kifita/git_multicast', out: w, err: w)
|
53
41
|
|
54
42
|
clone!
|
55
43
|
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'when repo is a fork'do
|
47
|
+
let(:repo_name) { 'git-hooks' }
|
56
48
|
|
57
49
|
it 'adds upstream remote' do
|
58
|
-
|
59
|
-
.
|
60
|
-
|
61
|
-
git
|
62
|
-
|
63
|
-
|
50
|
+
VCR.use_cassette('clone_repos') do
|
51
|
+
expect(cloner).to receive(:spawn)
|
52
|
+
.with(
|
53
|
+
"git clone git@github.com:rranelli/ruby-#{repo_name}.git " \
|
54
|
+
"/kifita/ruby-#{repo_name} && git -C \"/kifita/ruby-#{repo_name}\"" \
|
55
|
+
' remote add upstream ' \
|
56
|
+
"git@github.com:stupied4ever/#{repo_name}.git --fetch",
|
57
|
+
out: w, err: w)
|
64
58
|
|
65
|
-
|
59
|
+
clone!
|
60
|
+
end
|
66
61
|
end
|
67
62
|
end
|
68
63
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_multicast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Renan Ranelli
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: recursive-open-struct
|
@@ -183,6 +183,7 @@ files:
|
|
183
183
|
- lib/git_multicast/version.rb
|
184
184
|
- spec/fixtures/vcr_cassettes/bitbucket_all_user_repos.yml
|
185
185
|
- spec/fixtures/vcr_cassettes/bitbucket_repo.yml
|
186
|
+
- spec/fixtures/vcr_cassettes/clone_repos.yml
|
186
187
|
- spec/fixtures/vcr_cassettes/github_all_user_repos.yml
|
187
188
|
- spec/fixtures/vcr_cassettes/github_repo.yml
|
188
189
|
- spec/fixtures/vcr_cassettes/github_repo_parent.yml
|