defunkt-github 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest +6 -3
- data/commands/network.rb +113 -0
- data/github-gem.gemspec +2 -2
- metadata +2 -1
data/Manifest
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
History.txt
|
2
2
|
LICENSE
|
3
|
-
Manifest
|
4
|
-
README
|
3
|
+
Manifest
|
4
|
+
README
|
5
5
|
Rakefile
|
6
|
+
bin/gh
|
6
7
|
bin/github
|
7
8
|
commands/commands.rb
|
8
9
|
commands/helpers.rb
|
9
|
-
|
10
|
+
commands/network.rb
|
11
|
+
github-gem.gemspec
|
10
12
|
lib/github/command.rb
|
11
13
|
lib/github/extensions.rb
|
12
14
|
lib/github/helper.rb
|
15
|
+
lib/github.rb
|
13
16
|
spec/command_spec.rb
|
14
17
|
spec/extensions_spec.rb
|
15
18
|
spec/github_spec.rb
|
data/commands/network.rb
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
desc "Project network tools - sub-commands : web [user], list, fetch, commits"
|
2
|
+
flags :after => "Only show commits after a certain date"
|
3
|
+
flags :before => "Only show commits before a certain date"
|
4
|
+
flags :shas => "Only show shas"
|
5
|
+
flags :project => "Filter commits on a certain project"
|
6
|
+
flags :author => "Filter commits on a email address of author"
|
7
|
+
flags :applies => "Filter commits to patches that apply cleanly"
|
8
|
+
flags :noapply => "Filter commits to patches that do not apply cleanly"
|
9
|
+
flags :nocache => "Do not use the cached network data"
|
10
|
+
flags :cache => "Use the network data even if it's expired"
|
11
|
+
flags :sort => "How to sort : date(*), branch, author"
|
12
|
+
flags :common => "Show common branch point"
|
13
|
+
flags :thisbranch => "Look at branches that match the current one"
|
14
|
+
flags :limit => "Only look through the first X heads - useful for really large projects"
|
15
|
+
command :network do |command, user|
|
16
|
+
return if !helper.project
|
17
|
+
user ||= helper.owner
|
18
|
+
|
19
|
+
case command
|
20
|
+
when 'web'
|
21
|
+
helper.open helper.network_page_for(user)
|
22
|
+
when 'list'
|
23
|
+
data = helper.get_network_data(user, options)
|
24
|
+
data['users'].each do |hsh|
|
25
|
+
puts [ hsh['name'].ljust(20), hsh['heads'].map {|a| a['name']}.uniq.join(', ') ].join(' ')
|
26
|
+
end
|
27
|
+
when 'fetch'
|
28
|
+
# fetch each remote we don't have
|
29
|
+
data = helper.get_network_data(user, options)
|
30
|
+
data['users'].each do |hsh|
|
31
|
+
u = hsh['name']
|
32
|
+
GitHub.invoke(:track, u) unless helper.tracking?(u)
|
33
|
+
puts "fetching #{u}"
|
34
|
+
GitHub.invoke(:fetch_all, u)
|
35
|
+
end
|
36
|
+
when 'commits'
|
37
|
+
# show commits we don't have yet
|
38
|
+
|
39
|
+
$stderr.puts 'gathering heads'
|
40
|
+
cherry = []
|
41
|
+
|
42
|
+
if helper.cache_commits_data(options)
|
43
|
+
ids = []
|
44
|
+
data = helper.get_network_data(user, options)
|
45
|
+
data['users'].each do |hsh|
|
46
|
+
u = hsh['name']
|
47
|
+
if options[:thisbranch]
|
48
|
+
user_ids = hsh['heads'].map { |a| a['id'] if a['name'] == helper.current_branch }.compact
|
49
|
+
else
|
50
|
+
user_ids = hsh['heads'].map { |a| a['id'] }
|
51
|
+
end
|
52
|
+
user_ids.each do |id|
|
53
|
+
if !helper.has_commit?(id) && helper.cache_expired?
|
54
|
+
GitHub.invoke(:track, u) unless helper.tracking?(u)
|
55
|
+
puts "fetching #{u}"
|
56
|
+
GitHub.invoke(:fetch_all, u)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
ids += user_ids
|
60
|
+
end
|
61
|
+
ids.uniq!
|
62
|
+
|
63
|
+
$stderr.puts 'has heads'
|
64
|
+
|
65
|
+
# check that we have all these shas locally
|
66
|
+
local_heads = helper.local_heads
|
67
|
+
local_heads_not = local_heads.map { |a| "^#{a}"}
|
68
|
+
looking_for = (ids - local_heads) + local_heads_not
|
69
|
+
commits = helper.get_commits(looking_for)
|
70
|
+
|
71
|
+
$stderr.puts 'ID SIZE:' + ids.size.to_s
|
72
|
+
|
73
|
+
ignores = helper.ignore_sha_array
|
74
|
+
|
75
|
+
ids.each do |id|
|
76
|
+
next if ignores[id] || !commits.assoc(id)
|
77
|
+
cherries = helper.get_cherry(id)
|
78
|
+
cherries = helper.remove_ignored(cherries, ignores)
|
79
|
+
cherry += cherries
|
80
|
+
helper.ignore_shas([id]) if cherries.size == 0
|
81
|
+
$stderr.puts "checking head #{id} : #{cherry.size.to_s}"
|
82
|
+
break if options[:limit] && cherry.size > options[:limit].to_i
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
if cherry.size > 0 || !helper.cache_commits_data(options)
|
87
|
+
helper.print_network_cherry_help if !options[:shas]
|
88
|
+
|
89
|
+
if helper.cache_commits_data(options)
|
90
|
+
$stderr.puts "caching..."
|
91
|
+
$stderr.puts "commits: " + cherry.size.to_s
|
92
|
+
our_commits = cherry.map { |item| c = commits.assoc(item[1]); [item, c] if c }
|
93
|
+
our_commits.delete_if { |item| item == nil }
|
94
|
+
helper.cache_commits(our_commits)
|
95
|
+
else
|
96
|
+
$stderr.puts "using cached..."
|
97
|
+
our_commits = helper.commits_cache
|
98
|
+
end
|
99
|
+
|
100
|
+
helper.print_commits(our_commits, options)
|
101
|
+
else
|
102
|
+
puts "no unapplied commits"
|
103
|
+
end
|
104
|
+
else
|
105
|
+
helper.print_network_help
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
desc "Ignore a SHA (from 'github network commits')"
|
110
|
+
command :ignore do |sha|
|
111
|
+
commits = helper.resolve_commits(sha)
|
112
|
+
helper.ignore_shas(commits) # add to .git/ignore-shas file
|
113
|
+
end
|
data/github-gem.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "github"
|
3
|
-
s.version = "0.3.
|
3
|
+
s.version = "0.3.3"
|
4
4
|
|
5
5
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
6
6
|
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.email = %q{chris@ozmm.org}
|
13
13
|
s.executables = ["github", "gh"]
|
14
14
|
s.extra_rdoc_files = ["bin/github", "bin/gh", "lib/github/extensions.rb", "lib/github/command.rb", "lib/github/helper.rb", "lib/github.rb", "LICENSE", "README"]
|
15
|
-
s.files = ["bin/github", "commands/commands.rb", "commands/helpers.rb", "lib/github/extensions.rb", "lib/github/command.rb", "lib/github/helper.rb", "lib/github.rb", "LICENSE", "Manifest", "README", "spec/command_spec.rb", "spec/extensions_spec.rb", "spec/github_spec.rb", "spec/helper_spec.rb", "spec/spec_helper.rb", "spec/ui_spec.rb", "spec/windoze_spec.rb", "github-gem.gemspec"]
|
15
|
+
s.files = ["bin/github", "commands/network.rb", "commands/commands.rb", "commands/helpers.rb", "lib/github/extensions.rb", "lib/github/command.rb", "lib/github/helper.rb", "lib/github.rb", "LICENSE", "Manifest", "README", "spec/command_spec.rb", "spec/extensions_spec.rb", "spec/github_spec.rb", "spec/helper_spec.rb", "spec/spec_helper.rb", "spec/ui_spec.rb", "spec/windoze_spec.rb", "github-gem.gemspec"]
|
16
16
|
s.has_rdoc = true
|
17
17
|
s.homepage = %q{http://github.com/}
|
18
18
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Github", "--main", "README"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: defunkt-github
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Wanstrath, Kevin Ballard, Scott Chacon
|
@@ -39,6 +39,7 @@ extra_rdoc_files:
|
|
39
39
|
- README
|
40
40
|
files:
|
41
41
|
- bin/github
|
42
|
+
- commands/network.rb
|
42
43
|
- commands/commands.rb
|
43
44
|
- commands/helpers.rb
|
44
45
|
- lib/github/extensions.rb
|