git-graph 0.1.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.
- data.tar.gz.sig +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +6 -0
- data/Rakefile +6 -0
- data/Readme.md +51 -0
- data/bin/git-graph +108 -0
- data/gem-public_cert.pem +20 -0
- data/git-graph.gemspec +16 -0
- data/lib/git/graph.rb +6 -0
- data/lib/git/graph/version.rb +5 -0
- data/spec/git/graph_spec.rb +106 -0
- data/spec/spec_helper.rb +1 -0
- metadata +106 -0
- metadata.gz.sig +2 -0
data.tar.gz.sig
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
data/Readme.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
Make graphs from your git history
|
|
2
|
+
|
|
3
|
+
Install
|
|
4
|
+
=======
|
|
5
|
+
|
|
6
|
+
gem install git-graph
|
|
7
|
+
|
|
8
|
+
Usage
|
|
9
|
+
=====
|
|
10
|
+
|
|
11
|
+
```Bash
|
|
12
|
+
# number of lines in the readme as csv
|
|
13
|
+
git-graph --interval day --output csv "cat Readme.md | wc -l"
|
|
14
|
+
2013-02-01,24
|
|
15
|
+
2013-01-31,24
|
|
16
|
+
2013-01-31,22
|
|
17
|
+
...
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```Bash
|
|
21
|
+
# number of lines in the readme as line-chart (via google charts)
|
|
22
|
+
git-graph --interval year --output chart "cat Gemfile.lock | grep DEPENDENCIES -A 999 | wc -l"
|
|
23
|
+
```
|
|
24
|
+

|
|
25
|
+
|
|
26
|
+
```Bash
|
|
27
|
+
# number of gems the project depends on
|
|
28
|
+
git-graph --interval year --output chart "cat Gemfile.lock | grep DEPENDENCIES -A 999 | wc -l"
|
|
29
|
+
|
|
30
|
+
# number of lines of code
|
|
31
|
+
git-graph --interval year --output chart "find . -name '*.rb' | xargs wc -l | tail -1"
|
|
32
|
+
|
|
33
|
+
# application startup time
|
|
34
|
+
git-graph --interval year --bundle --output chart '(time -p bundle exec rails runner) 2>&1 | grep real | tail -1 | cut -d " " -f 2'
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If the script fails the previous output is assumed.
|
|
38
|
+
|
|
39
|
+
TODO
|
|
40
|
+
====
|
|
41
|
+
- interval month -> first of every month ?
|
|
42
|
+
- interval year -> same day on every year (leap-year adjustment)
|
|
43
|
+
- refactor into a class
|
|
44
|
+
- [spark](https://github.com/topfunky/sparklines) chart ?
|
|
45
|
+
|
|
46
|
+
Author
|
|
47
|
+
======
|
|
48
|
+
[Michael Grosser](http://grosser.it)<br/>
|
|
49
|
+
michael@grosser.it<br/>
|
|
50
|
+
License: MIT<br/>
|
|
51
|
+
[](https://travis-ci.org/grosser/git_graph)
|
data/bin/git-graph
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require 'optparse'
|
|
3
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
|
4
|
+
require 'git/graph'
|
|
5
|
+
require 'time'
|
|
6
|
+
|
|
7
|
+
options = {}
|
|
8
|
+
OptionParser.new do |opts|
|
|
9
|
+
opts.banner = <<BANNER
|
|
10
|
+
Make graphs from your git history.
|
|
11
|
+
|
|
12
|
+
Usage:
|
|
13
|
+
git-graph --interval day --output csv "cat Readme.md | wc -l"
|
|
14
|
+
|
|
15
|
+
Options:
|
|
16
|
+
BANNER
|
|
17
|
+
opts.on("-s", "--start DATA", "Start date (default: today)") { |date| options[:start] = Time.parse(date) }
|
|
18
|
+
opts.on("-e", "--end DATA", "End date (default: time of first commit)") { |date| options[:end] = Time.parse(date) }
|
|
19
|
+
opts.on("-o", "--output FORMAT", "Output format - csv|chart") { |format| options[:format] = format }
|
|
20
|
+
opts.on("-i", "--interval INTERVAL", "Interval of git history - year|week|day)") { |interval| options[:interval] = interval }
|
|
21
|
+
opts.on("-b", "--bundle", "Bundle before running command") { options[:bundle] = true }
|
|
22
|
+
opts.on("-h", "--help","Show this.") { puts opts; exit }
|
|
23
|
+
opts.on('-v', '--version','Show Version'){ puts Git::Graph::VERSION; exit}
|
|
24
|
+
end.parse!
|
|
25
|
+
|
|
26
|
+
raise "Give me 1 command" if ARGV.size != 1
|
|
27
|
+
|
|
28
|
+
def run(cmd)
|
|
29
|
+
all = ""
|
|
30
|
+
$stderr.puts cmd
|
|
31
|
+
IO.popen(cmd) do |pipe|
|
|
32
|
+
while str = pipe.gets
|
|
33
|
+
all << str
|
|
34
|
+
$stderr.puts str
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
[$?.success?, all]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def run!(command)
|
|
41
|
+
result = run(command)
|
|
42
|
+
raise "Command failed #{command}" unless result.first
|
|
43
|
+
result
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def without_bundler(&block)
|
|
47
|
+
if defined?(Bundler)
|
|
48
|
+
Bundler.with_clean_env(&block)
|
|
49
|
+
else
|
|
50
|
+
yield
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
start = (options[:start] || Time.now)
|
|
55
|
+
finish = (options[:end] || Time.at(run!("git log --reverse --format='%at' | head -1").last.to_i))
|
|
56
|
+
current = start
|
|
57
|
+
raise "Backwards" if start < finish
|
|
58
|
+
|
|
59
|
+
data = {}
|
|
60
|
+
|
|
61
|
+
DAY = 24*60*60
|
|
62
|
+
INTERVALS = {
|
|
63
|
+
"day" => DAY,
|
|
64
|
+
"week" => 7 * DAY,
|
|
65
|
+
"year" => 365 * DAY
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
interval = INTERVALS[options[:interval] || "year"]
|
|
69
|
+
|
|
70
|
+
while current > finish
|
|
71
|
+
date = current.strftime("%Y-%m-%d")
|
|
72
|
+
command = [
|
|
73
|
+
"git checkout `git rev-list -n 1 --before='#{date}' master`",
|
|
74
|
+
("bundle check || bundle" if options[:bundle]),
|
|
75
|
+
ARGV.first
|
|
76
|
+
].compact
|
|
77
|
+
success, output = without_bundler { run(command.map { |c| "(#{c})" }.join(" && ")) }
|
|
78
|
+
data[date] = if success
|
|
79
|
+
value = output.split("\n").last.strip
|
|
80
|
+
value =~ /^\d+\.\d+$/ ? value.to_f : value.to_i
|
|
81
|
+
else
|
|
82
|
+
data.values.last || 0
|
|
83
|
+
end
|
|
84
|
+
current -= interval
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
case options[:format]
|
|
88
|
+
when nil, "csv"
|
|
89
|
+
puts "Date,value"
|
|
90
|
+
data.map do |date, value|
|
|
91
|
+
puts "#{date},#{value}"
|
|
92
|
+
end
|
|
93
|
+
when "chart"
|
|
94
|
+
require "google_chart"
|
|
95
|
+
title = "git-graph"
|
|
96
|
+
dates = data.keys.reverse
|
|
97
|
+
values = data.values.reverse
|
|
98
|
+
url = GoogleChart::LineChart.new('600x500', title, false) do |line|
|
|
99
|
+
line.data("value", values)
|
|
100
|
+
line.axis :x, :labels => [dates.first, dates.last]
|
|
101
|
+
line.axis :y, :labels => ['0', values.max]
|
|
102
|
+
end.to_url
|
|
103
|
+
puts url
|
|
104
|
+
else
|
|
105
|
+
raise "Format #{options[:format]} unknonw"
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
run("git checkout master")
|
data/gem-public_cert.pem
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDMjCCAhqgAwIBAgIBADANBgkqhkiG9w0BAQUFADA/MRAwDgYDVQQDDAdtaWNo
|
|
3
|
+
YWVsMRcwFQYKCZImiZPyLGQBGRYHZ3Jvc3NlcjESMBAGCgmSJomT8ixkARkWAml0
|
|
4
|
+
MB4XDTEzMDIwMzE4MTMxMVoXDTE0MDIwMzE4MTMxMVowPzEQMA4GA1UEAwwHbWlj
|
|
5
|
+
aGFlbDEXMBUGCgmSJomT8ixkARkWB2dyb3NzZXIxEjAQBgoJkiaJk/IsZAEZFgJp
|
|
6
|
+
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMorXo/hgbUq97+kII9H
|
|
7
|
+
MsQcLdC/7wQ1ZP2OshVHPkeP0qH8MBHGg6eYisOX2ubNagF9YTCZWnhrdKrwpLOO
|
|
8
|
+
cPLaZbjUjljJ3cQR3B8Yn1veV5IhG86QseTBjymzJWsLpqJ1UZGpfB9tXcsFtuxO
|
|
9
|
+
6vHvcIHdzvc/OUkICttLbH+1qb6rsHUceqh+JrH4GrsJ5H4hAfIdyS2XMK7YRKbh
|
|
10
|
+
h+IBu6dFWJJByzFsYmV1PDXln3UBmgAt65cmCu4qPfThioCGDzbSJrGDGLmw/pFX
|
|
11
|
+
FPpVCm1zgYSb1v6Qnf3cgXa2f2wYGm17+zAVyIDpwryFru9yF/jJxE38z/DRsd9R
|
|
12
|
+
/88CAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUsiNnXHtKeMYYcr4yJVmQ
|
|
13
|
+
WONL+IwwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQAlyN7kKo/NQCQ0
|
|
14
|
+
AOzZLZ3WAePvStkCFIJ53tsv5Kyo4pMAllv+BgPzzBt7qi605mFSL6zBd9uLou+W
|
|
15
|
+
Co3s48p1dy7CjjAfVQdmVNHF3MwXtfC2OEyvSQPi4xKR8iba8wa3xp9LVo1PuLpw
|
|
16
|
+
/6DsrChWw74HfsJN6qJOK684hJeT8lBYAUfiC3wD0owoPSg+XtyAAddisR+KV5Y1
|
|
17
|
+
NmVHuLtQcNTZy+gRht3ahJRMuC6QyLmkTsf+6MaenwAMkAgHdswGsJztOnNnBa3F
|
|
18
|
+
y0kCSWmK6D+x/SbfS6r7Ke07MRqziJdB9GuE1+0cIRuFh8EQ+LN6HXCKM5pon/GU
|
|
19
|
+
ycwMXfl0
|
|
20
|
+
-----END CERTIFICATE-----
|
data/git-graph.gemspec
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
|
2
|
+
name = "git-graph"
|
|
3
|
+
require "#{name.gsub("-","/")}/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new name, Git::Graph::VERSION do |s|
|
|
6
|
+
s.summary = "Make graphs from your git history"
|
|
7
|
+
s.authors = ["Michael Grosser"]
|
|
8
|
+
s.email = "michael@grosser.it"
|
|
9
|
+
s.homepage = "http://github.com/grosser/#{name}"
|
|
10
|
+
s.files = `git ls-files`.split("\n")
|
|
11
|
+
s.license = "MIT"
|
|
12
|
+
s.signing_key = File.expand_path("~/.ssh/gem-private_key.pem")
|
|
13
|
+
s.cert_chain = ["gem-public_cert.pem"]
|
|
14
|
+
s.executables = ["git-graph"]
|
|
15
|
+
s.add_runtime_dependency "gchartrb"
|
|
16
|
+
end
|
data/lib/git/graph.rb
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
require "tmpdir"
|
|
3
|
+
|
|
4
|
+
describe Git::Graph do
|
|
5
|
+
it "has a VERSION" do
|
|
6
|
+
Git::Graph::VERSION.should =~ /^[\.\da-z]+$/
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context "CLI" do
|
|
10
|
+
def run(command, options={})
|
|
11
|
+
result = `#{command}`
|
|
12
|
+
raise "FAILED #{command}\n#{result}" if $?.success? == !!options[:fail]
|
|
13
|
+
result
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def graph(command)
|
|
17
|
+
run "ruby #{Bundler.root.join("bin/git-graph")} #{command}"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
before :all do
|
|
21
|
+
run("rm -rf #{Bundler.root.join("tmp/parallel")}")
|
|
22
|
+
run("cd #{Bundler.root.join("tmp")} && git clone git@github.com:grosser/parallel.git 2>&1")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
around do |example|
|
|
26
|
+
Dir.chdir(Bundler.root.join("tmp/parallel")) do
|
|
27
|
+
run("git co master 2>&1")
|
|
28
|
+
example.call
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "shows help" do
|
|
33
|
+
graph("--help").should include("-i, --interval INTERVAL")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "shows version" do
|
|
37
|
+
graph("--version").should include(Git::Graph::VERSION)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "graphs years in csv without any arguments" do
|
|
41
|
+
result = graph("'cat lib/parallel.rb | wc -l' 2>/dev/null")
|
|
42
|
+
result.should include("2012-")
|
|
43
|
+
result.should include("2011-")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "graphs years in csv" do
|
|
47
|
+
result = graph("--start 2013-01-01 'cat lib/parallel.rb | wc -l' 2>/dev/null")
|
|
48
|
+
result.should == <<-EXPECTED.gsub(/^\s+/, "")
|
|
49
|
+
Date,value
|
|
50
|
+
2013-01-01,331
|
|
51
|
+
2012-01-02,280
|
|
52
|
+
2011-01-02,258
|
|
53
|
+
2010-01-02,116
|
|
54
|
+
EXPECTED
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "graphs weeks in csv" do
|
|
58
|
+
result = graph("--start 2013-01-01 --end 2012-10-01 --interval week 'cat lib/parallel.rb | wc -l' 2>/dev/null")
|
|
59
|
+
result.should == <<-EXPECTED.gsub(/^\s+/, "")
|
|
60
|
+
Date,value
|
|
61
|
+
2013-01-01,331
|
|
62
|
+
2012-12-25,331
|
|
63
|
+
2012-12-18,331
|
|
64
|
+
2012-12-11,310
|
|
65
|
+
2012-12-04,310
|
|
66
|
+
2012-11-27,310
|
|
67
|
+
2012-11-20,301
|
|
68
|
+
2012-11-13,296
|
|
69
|
+
2012-11-06,296
|
|
70
|
+
2012-10-30,296
|
|
71
|
+
2012-10-23,296
|
|
72
|
+
2012-10-16,296
|
|
73
|
+
2012-10-09,296
|
|
74
|
+
2012-10-02,289
|
|
75
|
+
EXPECTED
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "fills in missing values with the last value" do
|
|
79
|
+
# this file is not present pre 2011 -> error
|
|
80
|
+
result = graph("--start 2013-01-01 'wc -l lib/parallel/version.rb' 2>/dev/null")
|
|
81
|
+
result.should == <<-EXPECTED.gsub(/^\s+/, "")
|
|
82
|
+
Date,value
|
|
83
|
+
2013-01-01,3
|
|
84
|
+
2012-01-02,3
|
|
85
|
+
2011-01-02,3
|
|
86
|
+
2010-01-02,3
|
|
87
|
+
EXPECTED
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "generates a chart" do
|
|
91
|
+
result = graph("--start 2013-01-01 --output chart 'cat lib/parallel.rb | wc -l' 2>/dev/null")
|
|
92
|
+
result.should include("http://chart.apis.google.com/chart?")
|
|
93
|
+
result.should include("")
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "returns to original commit after run" do
|
|
97
|
+
graph("--start 2013-01-01 'cat lib/parallel.rb | wc -l' 2>/dev/null")
|
|
98
|
+
run("git branch | grep '*'").should == "* master\n"
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it "can bundle" do
|
|
102
|
+
result = graph(%Q{--bundle --start 2013-01-01 '(time -p bundle exec ruby -e "sleep 0.1") 2>&1 | grep real | cut -d " " -f 2' 2>&1})
|
|
103
|
+
result.should =~ /2013-01-01,\d\.\d+.*2012-01-02,\d\.\d+.*2011-01-02,\d\.\d+.*2010-01-02,\d\.\d+/m
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "git/graph"
|
metadata
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: git-graph
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Michael Grosser
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain:
|
|
12
|
+
- !binary |-
|
|
13
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURNakNDQWhxZ0F3SUJB
|
|
14
|
+
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREEvTVJBd0RnWURWUVFEREFkdGFX
|
|
15
|
+
Tm8KWVdWc01SY3dGUVlLQ1pJbWlaUHlMR1FCR1JZSFozSnZjM05sY2pFU01C
|
|
16
|
+
QUdDZ21TSm9tVDhpeGtBUmtXQW1sMApNQjRYRFRFek1ESXdNekU0TVRNeE1W
|
|
17
|
+
b1hEVEUwTURJd016RTRNVE14TVZvd1B6RVFNQTRHQTFVRUF3d0hiV2xqCmFH
|
|
18
|
+
RmxiREVYTUJVR0NnbVNKb21UOGl4a0FSa1dCMmR5YjNOelpYSXhFakFRQmdv
|
|
19
|
+
SmtpYUprL0lzWkFFWkZnSnAKZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFB
|
|
20
|
+
RGdnRVBBRENDQVFvQ2dnRUJBTW9yWG8vaGdiVXE5NytrSUk5SApNc1FjTGRD
|
|
21
|
+
Lzd3UTFaUDJPc2hWSFBrZVAwcUg4TUJIR2c2ZVlpc09YMnViTmFnRjlZVENa
|
|
22
|
+
V25ocmRLcndwTE9PCmNQTGFaYmpVamxqSjNjUVIzQjhZbjF2ZVY1SWhHODZR
|
|
23
|
+
c2VUQmp5bXpKV3NMcHFKMVVaR3BmQjl0WGNzRnR1eE8KNnZIdmNJSGR6dmMv
|
|
24
|
+
T1VrSUN0dExiSCsxcWI2cnNIVWNlcWgrSnJINEdyc0o1SDRoQWZJZHlTMlhN
|
|
25
|
+
SzdZUktiaApoK0lCdTZkRldKSkJ5ekZzWW1WMVBEWGxuM1VCbWdBdDY1Y21D
|
|
26
|
+
dTRxUGZUaGlvQ0dEemJTSnJHREdMbXcvcEZYCkZQcFZDbTF6Z1lTYjF2NlFu
|
|
27
|
+
ZjNjZ1hhMmYyd1lHbTE3K3pBVnlJRHB3cnlGcnU5eUYvakp4RTM4ei9EUnNk
|
|
28
|
+
OVIKLzg4Q0F3RUFBYU01TURjd0NRWURWUjBUQkFJd0FEQWRCZ05WSFE0RUZn
|
|
29
|
+
UVVzaU5uWEh0S2VNWVljcjR5SlZtUQpXT05MK0l3d0N3WURWUjBQQkFRREFn
|
|
30
|
+
U3dNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUFseU43a0tvL05RQ1EwCkFP
|
|
31
|
+
elpMWjNXQWVQdlN0a0NGSUo1M3RzdjVLeW80cE1BbGx2K0JnUHp6QnQ3cWk2
|
|
32
|
+
MDVtRlNMNnpCZDl1TG91K1cKQ28zczQ4cDFkeTdDampBZlZRZG1WTkhGM013
|
|
33
|
+
WHRmQzJPRXl2U1FQaTR4S1I4aWJhOHdhM3hwOUxWbzFQdUxwdwovNkRzckNo
|
|
34
|
+
V3c3NEhmc0pONnFKT0s2ODRoSmVUOGxCWUFVZmlDM3dEMG93b1BTZytYdHlB
|
|
35
|
+
QWRkaXNSK0tWNVkxCk5tVkh1THRRY05UWnkrZ1JodDNhaEpSTXVDNlF5TG1r
|
|
36
|
+
VHNmKzZNYWVud0FNa0FnSGRzd0dzSnp0T25ObkJhM0YKeTBrQ1NXbUs2RCt4
|
|
37
|
+
L1NiZlM2cjdLZTA3TVJxemlKZEI5R3VFMSswY0lSdUZoOEVRK0xONkhYQ0tN
|
|
38
|
+
NXBvbi9HVQp5Y3dNWGZsMAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
|
|
39
|
+
date: 2013-03-10 00:00:00.000000000 Z
|
|
40
|
+
dependencies:
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: gchartrb
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
none: false
|
|
45
|
+
requirements:
|
|
46
|
+
- - ! '>='
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '0'
|
|
49
|
+
type: :runtime
|
|
50
|
+
prerelease: false
|
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
52
|
+
none: false
|
|
53
|
+
requirements:
|
|
54
|
+
- - ! '>='
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: '0'
|
|
57
|
+
description:
|
|
58
|
+
email: michael@grosser.it
|
|
59
|
+
executables:
|
|
60
|
+
- git-graph
|
|
61
|
+
extensions: []
|
|
62
|
+
extra_rdoc_files: []
|
|
63
|
+
files:
|
|
64
|
+
- .travis.yml
|
|
65
|
+
- Gemfile
|
|
66
|
+
- Rakefile
|
|
67
|
+
- Readme.md
|
|
68
|
+
- bin/git-graph
|
|
69
|
+
- gem-public_cert.pem
|
|
70
|
+
- git-graph.gemspec
|
|
71
|
+
- lib/git/graph.rb
|
|
72
|
+
- lib/git/graph/version.rb
|
|
73
|
+
- spec/git/graph_spec.rb
|
|
74
|
+
- spec/spec_helper.rb
|
|
75
|
+
homepage: http://github.com/grosser/git-graph
|
|
76
|
+
licenses:
|
|
77
|
+
- MIT
|
|
78
|
+
post_install_message:
|
|
79
|
+
rdoc_options: []
|
|
80
|
+
require_paths:
|
|
81
|
+
- lib
|
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
83
|
+
none: false
|
|
84
|
+
requirements:
|
|
85
|
+
- - ! '>='
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: '0'
|
|
88
|
+
segments:
|
|
89
|
+
- 0
|
|
90
|
+
hash: 3863793032351926901
|
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
|
+
none: false
|
|
93
|
+
requirements:
|
|
94
|
+
- - ! '>='
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
segments:
|
|
98
|
+
- 0
|
|
99
|
+
hash: 3863793032351926901
|
|
100
|
+
requirements: []
|
|
101
|
+
rubyforge_project:
|
|
102
|
+
rubygems_version: 1.8.24
|
|
103
|
+
signing_key:
|
|
104
|
+
specification_version: 3
|
|
105
|
+
summary: Make graphs from your git history
|
|
106
|
+
test_files: []
|
metadata.gz.sig
ADDED