git-age 0.1.8 → 0.1.9
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.gitignore +1 -0
- data/Gemfile.lock +4 -3
- data/gem-public_cert.pem +25 -25
- data/lib/git/age/graph_cli.rb +6 -7
- data/lib/git/age/main.rb +47 -37
- data/lib/git/age/options.rb +4 -1
- data/lib/git/age/stats.rb +16 -8
- data/lib/git/age/version.rb +4 -1
- data/lib/git/age.rb +3 -0
- data.tar.gz.sig +0 -0
- metadata +28 -31
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8f167bd15895d9b201bca6d730d85fc3ace6e0c8a777fbc3020714811badc03
|
4
|
+
data.tar.gz: 94bb60f0da0eb5839236775248e7133f615208eb4e841939270d92e3969c42cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38054b5f89fb3f1befb4423ec430837637041b8dca54cad3625a01aeb4d204b61bfa89a75aabef4bdf2772a7a212e7de923c4186ae316a3310f4d682fc286431
|
7
|
+
data.tar.gz: ac6a88494df9b68ed0c95d1bb2838ab4051ef76994513cf4afb0427f6381ee32d7188b5dd70b51f8d45b2f27112bac6458194a96518878181fe55a8daedd6b73
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
git-age (0.1.
|
4
|
+
git-age (0.1.9)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
minitest (5.
|
9
|
+
minitest (5.25.5)
|
10
10
|
rake (12.3.3)
|
11
11
|
|
12
12
|
PLATFORMS
|
13
13
|
ruby
|
14
|
+
x86_64-linux
|
14
15
|
|
15
16
|
DEPENDENCIES
|
16
17
|
git-age!
|
@@ -18,4 +19,4 @@ DEPENDENCIES
|
|
18
19
|
rake (~> 12.0)
|
19
20
|
|
20
21
|
BUNDLED WITH
|
21
|
-
2.
|
22
|
+
2.6.9
|
data/gem-public_cert.pem
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
+
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
2
|
+
MIIEhTCCAu2gAwIBAgIBATANBgkqhkiG9w0BAQsFADBEMQwwCgYDVQQDDAN0YXEx
|
3
|
+
HzAdBgoJkiaJk/IsZAEZFg9ldXN0YXF1aW9yYW5nZWwxEzARBgoJkiaJk/IsZAEZ
|
4
|
+
FgNjb20wHhcNMjUwNzAzMTEwNTQ0WhcNMjYwNzAzMTEwNTQ0WjBEMQwwCgYDVQQD
|
5
|
+
DAN0YXExHzAdBgoJkiaJk/IsZAEZFg9ldXN0YXF1aW9yYW5nZWwxEzARBgoJkiaJ
|
6
|
+
k/IsZAEZFgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDFGxrA
|
7
|
+
XFlGTCSYCq7I3wSXk7s7MzobHtkBkPMllpy7GP1Fm+GCnBzKf8ydRCbrLTXJT1sj
|
8
|
+
9pkRbUejqTuMpJIVkOBcDKOfi6q/giT+zsUeJFHM0frGE+Eou7fmu4R8b11HLV66
|
9
|
+
kdxpKLDEMikmiXt8slncXJtzrHXdwTGBOTcXq7zOcHCpJF+suk+v4/6voAxLchab
|
10
|
+
WTl5toZyDySurazkd5IkMYvnE9QbGvy2s7A97dUORiAfr9P+DyLUFcg8OykJcNla
|
11
|
+
Jn1ai1BSGCopl7s1zuxTUJkKIKx9emSVC5bHKz1LLL9v4D26UumXfz+3eZSw5Uw1
|
12
|
+
WWD7fDSm4eVJ0Nv9RpE/GCEKymQaxrMF0FClUmaWQqFue5rC5sd3GDKkED09kJfh
|
13
|
+
y6QtcfmgDQFn9Fw0Xjjr/5Z+Oe/YjySixPrsvPJtJsNPrA+JJpVAWXFteFVsjjgt
|
14
|
+
rVPQ+VOJ1/WuSjfHHMFrdQ03NgaQv8cGEFLC2nfYV87FxxYIfx7HQ8nEHeMCAwEA
|
15
|
+
AaOBgTB/MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQq3/CFnxue
|
16
|
+
ZKkpgoKtsqcQ1Tp30TAiBgNVHREEGzAZgRd0YXFAZXVzdGFxdWlvcmFuZ2VsLmNv
|
17
|
+
bTAiBgNVHRIEGzAZgRd0YXFAZXVzdGFxdWlvcmFuZ2VsLmNvbTANBgkqhkiG9w0B
|
18
|
+
AQsFAAOCAYEAKHqAxMgi8vdeI8u9Uc6u460DLvBCI38xSdo9i3BX8ZnIXlAuaYTG
|
19
|
+
W+hQc+BMAnTHOxicz93ItVAK8bGhLkJeqI6H0uVvDkANLAGRIXQSt/xj3Jnmy9tL
|
20
|
+
LEezYG53xST2riT4CHrJl9rXiyZZ8Q4AsrESDQ3caWAj2hLcrqE6NFQcV1At1lIy
|
21
|
+
7fl+8gObBLn2u6qm/KrkYS8E42j4pDeZdkr7KG3Fm5QE3pJcb0M+bkapFaacSuCR
|
22
|
+
6oRkinhNhcmNFnY4CWT9+UYVw7kZ/MB4PkiyDun0wwhKTIz6FcKEUZcD28+LJZhf
|
23
|
+
gH3nTc+lYcGf2ogfyI8zb2RD+IaTjPEZlz8Jb3SQ5xEebaHVIw1G8O2W7aVFv3Yx
|
24
|
+
ipay7GJOMMX24H8Cuwab6VR+XDmac11TWqxdxgMrnX/iEbFOvm4ATx4ex3WujfDg
|
25
|
+
t1N168XKmHLf0EONA7w6EVUkkgqBUODRq63vRithFLB3LTCzspKFG2ZkVYrNJGFP
|
26
|
+
z6BoxQhjecS+
|
27
27
|
-----END CERTIFICATE-----
|
data/lib/git/age/graph_cli.rb
CHANGED
@@ -1,22 +1,21 @@
|
|
1
|
+
# typed: false
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
1
4
|
module Git
|
2
5
|
module Age
|
3
6
|
class GraphCli
|
4
7
|
def self.present?
|
5
|
-
IO.popen('which graph')
|
6
|
-
io.read
|
7
|
-
end.strip.size != 0
|
8
|
+
IO.popen('which graph', &:read).chomp.strip.size != 0
|
8
9
|
end
|
9
10
|
|
10
11
|
def self.create(input)
|
11
12
|
options = Git::Age::Options.instance
|
12
13
|
legend = options.test ? 'code' : ''
|
13
14
|
type = options.type == 'bar' ? '--bar' : ''
|
14
|
-
|
15
|
+
puts "Creating image #{options.image} ..."
|
15
16
|
|
16
17
|
cmd = "graph #{input} #{type} -o #{options.image} --title '#{options.title}' --xlabel='#{options.xtitle}' --ylabel='#{options.ytitle}' --xtick-fontsize 5 --time-format-output '%Y-%m' --legend='#{legend}' 2> /dev/null"
|
17
|
-
IO.popen(cmd)
|
18
|
-
io.read
|
19
|
-
end
|
18
|
+
IO.popen(cmd, &:read)
|
20
19
|
end
|
21
20
|
end
|
22
21
|
end
|
data/lib/git/age/main.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# typed: false
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
1
4
|
require 'date'
|
2
5
|
require 'io/console'
|
3
6
|
|
@@ -7,11 +10,13 @@ module Git
|
|
7
10
|
attr_reader :dates, :files
|
8
11
|
|
9
12
|
def initialize
|
10
|
-
|
13
|
+
puts "Waiting, analysing your repository ..."
|
11
14
|
options = Git::Age::Options.instance
|
12
15
|
|
13
|
-
@dates
|
14
|
-
@files
|
16
|
+
@dates = Hash.new { |hash, key| hash[key] = { code: 0, test: 0 } }
|
17
|
+
@files = fill_files
|
18
|
+
raise "Seems you don't have any text files under Git control. Can't proceed." if @files.size <= 0
|
19
|
+
|
15
20
|
@winsize = IO.console.winsize
|
16
21
|
@test = options.test
|
17
22
|
@code = options.code
|
@@ -20,6 +25,9 @@ module Git
|
|
20
25
|
|
21
26
|
@test_regexp = @test ? %r{^#{@test}} : nil
|
22
27
|
@code_regexp = @code ? %r{^#{@code}} : nil
|
28
|
+
rescue StandardError => e
|
29
|
+
warn e.message
|
30
|
+
exit 1
|
23
31
|
end
|
24
32
|
|
25
33
|
def run
|
@@ -28,9 +36,8 @@ module Git
|
|
28
36
|
create_csv
|
29
37
|
create_image
|
30
38
|
show_stats
|
31
|
-
rescue => e
|
32
|
-
|
33
|
-
puts e.backtrace
|
39
|
+
rescue StarndardError => e
|
40
|
+
warn "Error: #{e}. Something is missing."
|
34
41
|
end
|
35
42
|
|
36
43
|
private
|
@@ -44,13 +51,11 @@ module Git
|
|
44
51
|
end
|
45
52
|
|
46
53
|
def read_files
|
47
|
-
cnt
|
48
|
-
total
|
54
|
+
cnt = 0
|
55
|
+
total = @files.size
|
49
56
|
|
50
57
|
@files.each do |file|
|
51
58
|
cnt += 1
|
52
|
-
next unless text?(file)
|
53
|
-
|
54
59
|
print "Checking [#{cnt}/#{total}] #{file} ...".ljust(@winsize[1]) + "\r"
|
55
60
|
|
56
61
|
begin
|
@@ -72,20 +77,20 @@ module Git
|
|
72
77
|
|
73
78
|
@authors[matches[:author].strip.chomp] += 1 if @authors
|
74
79
|
end
|
75
|
-
rescue =>
|
76
|
-
print "Error on file: #{file}: #{
|
80
|
+
rescue => e
|
81
|
+
print "Error on file: #{file}: #{e}\r"
|
77
82
|
end
|
78
83
|
end
|
79
84
|
|
80
|
-
@mapfile
|
85
|
+
@mapfile&.close
|
81
86
|
write_authors if @authors
|
82
|
-
rescue => e
|
83
|
-
|
87
|
+
rescue StandardError => e
|
88
|
+
warn "Error reading files: #{e}"
|
84
89
|
end
|
85
90
|
|
86
91
|
def write_authors
|
87
92
|
path = Git::Age::Options.instance.authors
|
88
|
-
|
93
|
+
puts "\nWriting authors file #{path} ..."
|
89
94
|
|
90
95
|
File.open(path, 'w') do |file|
|
91
96
|
@authors.each do |author, lines|
|
@@ -95,26 +100,26 @@ module Git
|
|
95
100
|
end
|
96
101
|
|
97
102
|
def sort_dates
|
98
|
-
@dates = @dates.sort_by { |k,
|
103
|
+
@dates = @dates.sort_by { |k, _| k }
|
99
104
|
end
|
100
105
|
|
101
106
|
def create_csv
|
102
107
|
output = Git::Age::Options.instance.output
|
103
|
-
|
108
|
+
puts "Creating CSV file #{output} with #{@dates.size} lines ...".ljust(@winsize[1])
|
104
109
|
|
105
110
|
File.open(output, 'w') do |file|
|
106
|
-
header = "\"date\",\"code\""
|
111
|
+
header = ["\"date\",\"code\""]
|
107
112
|
header << ",\"test\"" if @test
|
108
|
-
file << "#{header}\n"
|
113
|
+
file << "#{header.join}\n"
|
109
114
|
|
110
115
|
@dates.each do |key, data|
|
111
|
-
line = "\"#{key}\",#{data[:code]}"
|
116
|
+
line = ["\"#{key}\",#{data[:code]}"]
|
112
117
|
line << ",#{data[:test]}" if @test
|
113
|
-
file << "#{line}\n"
|
118
|
+
file << "#{line.join}\n"
|
114
119
|
end
|
115
120
|
end
|
116
|
-
rescue => e
|
117
|
-
|
121
|
+
rescue StandardError => e
|
122
|
+
warn "Error creating CSV file: #{e}"
|
118
123
|
end
|
119
124
|
|
120
125
|
def create_image
|
@@ -124,12 +129,12 @@ module Git
|
|
124
129
|
}[options.processor]
|
125
130
|
|
126
131
|
unless processor
|
127
|
-
|
132
|
+
warn "Image processor not supported: #{options.processor}"
|
128
133
|
return
|
129
134
|
end
|
130
135
|
|
131
136
|
unless processor.present?
|
132
|
-
|
137
|
+
warn "Image processor #{options.processor} is not installed"
|
133
138
|
return
|
134
139
|
end
|
135
140
|
|
@@ -138,22 +143,22 @@ module Git
|
|
138
143
|
|
139
144
|
def fill_files
|
140
145
|
branch = Git::Age::Options.instance.branch
|
141
|
-
|
146
|
+
puts "Reading text files info from #{branch} branch ..."
|
142
147
|
|
143
148
|
IO.popen("git ls-tree -r #{branch} --name-only") do |io|
|
144
149
|
io.read.split("\n")
|
150
|
+
end.select do |file|
|
151
|
+
text?(file)
|
145
152
|
end
|
146
|
-
rescue => e
|
147
|
-
|
153
|
+
rescue StandardError => e
|
154
|
+
warn "Error while searching for Git controlled files: #{e}"
|
148
155
|
end
|
149
156
|
|
150
157
|
def text?(file)
|
151
158
|
return false unless File.exist?(file)
|
152
159
|
|
153
|
-
IO.popen("file -i -b \"#{file}\" 2> /dev/null")
|
154
|
-
|
155
|
-
end.match?(/\Atext/)
|
156
|
-
rescue
|
160
|
+
IO.popen("file -i -b \"#{file}\" 2> /dev/null", &:read).match?(/\Atext/)
|
161
|
+
rescue StandardError
|
157
162
|
false
|
158
163
|
end
|
159
164
|
|
@@ -167,12 +172,17 @@ module Git
|
|
167
172
|
puts "First commit in: #{first}"
|
168
173
|
puts "Last commit in: #{last}"
|
169
174
|
puts "Repository has #{diff} days with commits"
|
170
|
-
puts "Month with more code lines unchanged: #{ustats[:bigger][:date]} (#{ustats[:bigger][:lines]} lines)"
|
171
175
|
|
172
|
-
if
|
173
|
-
|
174
|
-
|
176
|
+
if ustats
|
177
|
+
puts "Month with more code lines unchanged: #{ustats[:bigger][:date]} (#{ustats[:bigger][:lines]} lines)"
|
178
|
+
else
|
179
|
+
puts "Could not find unchanged statistics for this repo"
|
175
180
|
end
|
181
|
+
|
182
|
+
return unless @test_regexp && @code_regexp
|
183
|
+
|
184
|
+
ratio = stats.code_to_test_ratio
|
185
|
+
puts "Code to test ratio: 1:#{ratio[:ratio]} (#{ratio[:code]}/#{ratio[:test]})"
|
176
186
|
end
|
177
187
|
end
|
178
188
|
end
|
data/lib/git/age/options.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# typed: false
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
1
4
|
require 'singleton'
|
2
5
|
|
3
6
|
module Git
|
@@ -5,7 +8,7 @@ module Git
|
|
5
8
|
class Options
|
6
9
|
include Singleton
|
7
10
|
attr_accessor :branch, :output, :title, :processor, :image, :xtitle,
|
8
|
-
|
11
|
+
:ytitle, :map, :test, :code, :type, :authors
|
9
12
|
|
10
13
|
def initialize
|
11
14
|
@branch = 'master'
|
data/lib/git/age/stats.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# typed: false
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
1
4
|
module Git
|
2
5
|
module Age
|
3
6
|
class Stats
|
@@ -14,30 +17,35 @@ module Git
|
|
14
17
|
end
|
15
18
|
|
16
19
|
def unchanged_stats
|
17
|
-
max =
|
20
|
+
max = dates.max_by { |_, value| value[:code] }
|
18
21
|
{ bigger: { date: max[0], lines: max[1][:code] } }
|
22
|
+
rescue StandardError
|
23
|
+
nil
|
19
24
|
end
|
20
25
|
|
21
26
|
def code_to_test_ratio
|
22
|
-
stats =
|
27
|
+
stats = dates.reduce({ code: 0, test: 0 }) do |memo, data|
|
23
28
|
memo[:code] += data[1][:code]
|
24
29
|
memo[:test] += data[1][:test]
|
25
30
|
memo
|
26
31
|
end
|
27
32
|
|
28
|
-
{ code: stats[:code], test: stats[:test], ratio: (stats[:test]
|
29
|
-
rescue
|
33
|
+
{ code: stats[:code], test: stats[:test], ratio: (stats[:test] / stats[:code].to_f).round(2) }
|
34
|
+
rescue StandardError
|
30
35
|
{ code: 0, test: 0, ratio: 0.0 }
|
31
36
|
end
|
32
37
|
|
33
38
|
private
|
34
39
|
|
40
|
+
def dates
|
41
|
+
@data.dates
|
42
|
+
rescue StandardError
|
43
|
+
[]
|
44
|
+
end
|
45
|
+
|
35
46
|
def commit_date(order = nil)
|
36
47
|
cmd = "git log #{order} --pretty=format:%ad --date=short | head -n1"
|
37
|
-
|
38
|
-
IO.popen(cmd) do |io|
|
39
|
-
io.read.chomp.strip
|
40
|
-
end
|
48
|
+
IO.popen(cmd, &:read).chomp.strip
|
41
49
|
end
|
42
50
|
end
|
43
51
|
end
|
data/lib/git/age/version.rb
CHANGED
data/lib/git/age.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,42 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-age
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eustaquio Rangel
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain:
|
11
10
|
- |
|
12
11
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
+
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
12
|
+
MIIEhTCCAu2gAwIBAgIBATANBgkqhkiG9w0BAQsFADBEMQwwCgYDVQQDDAN0YXEx
|
13
|
+
HzAdBgoJkiaJk/IsZAEZFg9ldXN0YXF1aW9yYW5nZWwxEzARBgoJkiaJk/IsZAEZ
|
14
|
+
FgNjb20wHhcNMjUwNzAzMTEwNTQ0WhcNMjYwNzAzMTEwNTQ0WjBEMQwwCgYDVQQD
|
15
|
+
DAN0YXExHzAdBgoJkiaJk/IsZAEZFg9ldXN0YXF1aW9yYW5nZWwxEzARBgoJkiaJ
|
16
|
+
k/IsZAEZFgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDFGxrA
|
17
|
+
XFlGTCSYCq7I3wSXk7s7MzobHtkBkPMllpy7GP1Fm+GCnBzKf8ydRCbrLTXJT1sj
|
18
|
+
9pkRbUejqTuMpJIVkOBcDKOfi6q/giT+zsUeJFHM0frGE+Eou7fmu4R8b11HLV66
|
19
|
+
kdxpKLDEMikmiXt8slncXJtzrHXdwTGBOTcXq7zOcHCpJF+suk+v4/6voAxLchab
|
20
|
+
WTl5toZyDySurazkd5IkMYvnE9QbGvy2s7A97dUORiAfr9P+DyLUFcg8OykJcNla
|
21
|
+
Jn1ai1BSGCopl7s1zuxTUJkKIKx9emSVC5bHKz1LLL9v4D26UumXfz+3eZSw5Uw1
|
22
|
+
WWD7fDSm4eVJ0Nv9RpE/GCEKymQaxrMF0FClUmaWQqFue5rC5sd3GDKkED09kJfh
|
23
|
+
y6QtcfmgDQFn9Fw0Xjjr/5Z+Oe/YjySixPrsvPJtJsNPrA+JJpVAWXFteFVsjjgt
|
24
|
+
rVPQ+VOJ1/WuSjfHHMFrdQ03NgaQv8cGEFLC2nfYV87FxxYIfx7HQ8nEHeMCAwEA
|
25
|
+
AaOBgTB/MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQq3/CFnxue
|
26
|
+
ZKkpgoKtsqcQ1Tp30TAiBgNVHREEGzAZgRd0YXFAZXVzdGFxdWlvcmFuZ2VsLmNv
|
27
|
+
bTAiBgNVHRIEGzAZgRd0YXFAZXVzdGFxdWlvcmFuZ2VsLmNvbTANBgkqhkiG9w0B
|
28
|
+
AQsFAAOCAYEAKHqAxMgi8vdeI8u9Uc6u460DLvBCI38xSdo9i3BX8ZnIXlAuaYTG
|
29
|
+
W+hQc+BMAnTHOxicz93ItVAK8bGhLkJeqI6H0uVvDkANLAGRIXQSt/xj3Jnmy9tL
|
30
|
+
LEezYG53xST2riT4CHrJl9rXiyZZ8Q4AsrESDQ3caWAj2hLcrqE6NFQcV1At1lIy
|
31
|
+
7fl+8gObBLn2u6qm/KrkYS8E42j4pDeZdkr7KG3Fm5QE3pJcb0M+bkapFaacSuCR
|
32
|
+
6oRkinhNhcmNFnY4CWT9+UYVw7kZ/MB4PkiyDun0wwhKTIz6FcKEUZcD28+LJZhf
|
33
|
+
gH3nTc+lYcGf2ogfyI8zb2RD+IaTjPEZlz8Jb3SQ5xEebaHVIw1G8O2W7aVFv3Yx
|
34
|
+
ipay7GJOMMX24H8Cuwab6VR+XDmac11TWqxdxgMrnX/iEbFOvm4ATx4ex3WujfDg
|
35
|
+
t1N168XKmHLf0EONA7w6EVUkkgqBUODRq63vRithFLB3LTCzspKFG2ZkVYrNJGFP
|
36
|
+
z6BoxQhjecS+
|
38
37
|
-----END CERTIFICATE-----
|
39
|
-
date:
|
38
|
+
date: 2025-07-03 00:00:00.000000000 Z
|
40
39
|
dependencies: []
|
41
40
|
description: Check all the repository files lines dates and group it by year and month,
|
42
41
|
allowing check how old code is still in use
|
@@ -70,7 +69,6 @@ licenses: []
|
|
70
69
|
metadata:
|
71
70
|
homepage_uri: https://github.com/taq/git-age
|
72
71
|
source_code_uri: https://github.com/taq/git-age
|
73
|
-
post_install_message:
|
74
72
|
rdoc_options: []
|
75
73
|
require_paths:
|
76
74
|
- lib
|
@@ -85,8 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
83
|
- !ruby/object:Gem::Version
|
86
84
|
version: '0'
|
87
85
|
requirements: []
|
88
|
-
rubygems_version: 3.
|
89
|
-
signing_key:
|
86
|
+
rubygems_version: 3.6.6
|
90
87
|
specification_version: 4
|
91
88
|
summary: Create a CSV file with line year and month from your Git repository
|
92
89
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|