git-health-check 0.0.3 → 0.0.4

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.
@@ -5,20 +5,21 @@ module GitHealthCheck
5
5
 
6
6
  class GitHealthCheckCommand
7
7
 
8
- def initialize(parser, threshold = 0.5)
9
- @threshold = threshold
8
+ def initialize(parser, options)
9
+ @options = options
10
10
  @parser = parser
11
- @repository = Dir.pwd
11
+ @threshold = options[:threshold]
12
+ @limit = options[:limit]
13
+ @history = GitHealthCheck::History.new options
14
+ @working_copy = GitHealthCheck::WorkingCopy.new options
15
+ @packfile = GitHealthCheck::Packfile.new
12
16
  end
13
17
 
14
18
  def execute(view)
15
- history = GitHealthCheck::History.new(@repository, @threshold)
16
- working_copy = GitHealthCheck::WorkingCopy.new @repository
17
- packfile = GitHealthCheck::Packfile.new(@repository)
18
- packfile.packfile_stats
19
+ @packfile.packfile_stats
19
20
 
20
- working_copy_output = working_copy.find_in_working_copy
21
- history_output = history.search
21
+ working_copy_output = @working_copy.find_in_working_copy
22
+ history_output = @history.search
22
23
 
23
24
  working_copy_report = Table('object sha', 'size (MB)', 'path')
24
25
  history_report = Table('object sha', 'size (MB)', 'path', 'commit details', 'author')
@@ -26,7 +27,7 @@ module GitHealthCheck
26
27
  working_copy_output.each { |sha, size, path| working_copy_report << [sha, size, path] }
27
28
  history_output.each { |sha, size, path, where, who| history_report << [sha, size, path, where, who] }
28
29
 
29
- report = GitHealthCheck::Report.new(working_copy_report.to_html, history_report.to_html, packfile)
30
+ report = GitHealthCheck::Report.new(working_copy_report.to_html, history_report.to_html, @packfile, @options)
30
31
  report.create
31
32
 
32
33
  view.report_success
@@ -3,10 +3,6 @@ module GitHealthCheck
3
3
 
4
4
  class HelpCommand < GitHealthCheckCommand
5
5
 
6
- def initialize(parser)
7
- @parser = parser
8
- end
9
-
10
6
  def execute(view)
11
7
  view.output(@parser.to_s)
12
8
  view.report_success
@@ -7,6 +7,11 @@ module GitHealthCheck
7
7
 
8
8
  def initialize(argv)
9
9
  @argv = argv
10
+ @options = {
11
+ :threshold => 0.5,
12
+ :limit => 10,
13
+ :repository => Dir.pwd
14
+ }
10
15
  @parser = OptionParser.new
11
16
  @command_class = GitHealthCheckCommand
12
17
  set_parser_options
@@ -21,7 +26,10 @@ Output metrics for your Git repository.
21
26
  Examples:
22
27
  ghc
23
28
  ghc -t 10
24
- ghc -t 0.2
29
+ ghc --threshold 0.2
30
+ ghc -l 20
31
+ ghc --threshold 5 --limit 20
32
+ ghc -r projects/my_repo -t 10 -l 30
25
33
 
26
34
  EOB
27
35
  end
@@ -35,14 +43,24 @@ EOB
35
43
 
36
44
  @parser.on('-h', '--help', 'Displays this help message') { @command_class = HelpCommand }
37
45
 
38
- @parser.on('-t', '--threshold THRESHOLD', Float, 'Specify history size threshold in MB (default 0.5)') do |n|
39
- @threshold = n
46
+ @parser.on('-t', '--threshold THRESHOLD', Float, 'Specify minimum history threshold in MB (default 0.5)') do |n|
47
+ @options[:threshold] = n
48
+ end
49
+
50
+ @parser.on('-l', '--limit LIMIT', Integer, 'Specify working copy results limit (default 10)') do |n|
51
+ @options[:limit] = n
52
+ end
53
+
54
+ @parser.on('-r', '--repository REPOSITORY', String,
55
+ 'Specify the repository (current directory by default)') do |repo|
56
+ Dir.chdir repo # handles relative directories
57
+ @options[:repository] = Dir.pwd
40
58
  end
41
59
  end
42
60
 
43
61
  def parse
44
62
  @parser.parse!(@argv)
45
- @threshold ? @command_class.new(@parser, @threshold) : @command_class.new(@parser)
63
+ @command_class.new(@parser, @options)
46
64
  end
47
65
 
48
66
  end
@@ -1,10 +1,6 @@
1
1
  module GitHealthCheck
2
2
  class GitLib
3
3
 
4
- def initialize(repository_path)
5
- Dir.chdir repository_path
6
- end
7
-
8
4
  def get_commit_author(commit_sha)
9
5
  `git log #{commit_sha} -n 1 | grep Author | cut -f 2- -d ' '`.chomp
10
6
  end
@@ -13,27 +9,6 @@ module GitHealthCheck
13
9
  `git show -s #{commit_sha} --format='%h: %cr'`.chomp
14
10
  end
15
11
 
16
- def get_pack_number
17
- `ls .git/objects/pack/pack-*.idx 2> /dev/null | wc -l`.to_i
18
- end
19
-
20
- def get_status
21
- `git status`
22
- end
23
-
24
- def filesystem_check
25
- `git fsck --full --strict`
26
- end
27
-
28
- def garbage_collection
29
- `git gc`
30
- end
31
-
32
- def repack
33
- `git repack -a -d -f --depth=250 --window=250` # better than gc --aggressive
34
- # http://metalinguist.wordpress.com/2007/12/06/the-woes-of-git-gc-aggressive-and-how-git-deltas-work/
35
- end
36
-
37
12
  def count_objects
38
13
  `git count-objects -v`
39
14
  end
@@ -7,11 +7,10 @@ module GitHealthCheck
7
7
 
8
8
  MEGABYTE = 1024 ** 2
9
9
 
10
- def initialize(repository, threshold)
11
- @repository = repository
12
- @bytes_threshold = threshold.to_f * MEGABYTE
13
- Dir.chdir repository
14
- @git_lib = GitHealthCheck::GitLib.new repository
10
+ def initialize(options)
11
+ @repository = options[:repository]
12
+ @bytes_threshold = options[:threshold].to_f * MEGABYTE
13
+ @git_lib = GitHealthCheck::GitLib.new
15
14
  end
16
15
 
17
16
  def search
@@ -9,9 +9,8 @@ module GitHealthCheck
9
9
  attr_reader :prune_packable
10
10
  attr_reader :garbage
11
11
 
12
- def initialize(repository)
13
- @repository = repository
14
- @git_lib = GitHealthCheck::GitLib.new repository
12
+ def initialize
13
+ @git_lib = GitHealthCheck::GitLib.new
15
14
  end
16
15
 
17
16
  def packfile_stats
@@ -4,12 +4,12 @@ module GitHealthCheck
4
4
 
5
5
  class Report
6
6
 
7
- def initialize(working_copy, history, packfile)
7
+ def initialize(working_copy, history, packfile, options)
8
8
  @working_copy = working_copy
9
9
  @history = history
10
10
  @packfile = packfile
11
- @report_directory = Dir.pwd + '/healthcheck'
12
- @repository = Dir.pwd
11
+ @repository = options[:repository]
12
+ @report_directory = @repository + '/healthcheck'
13
13
  end
14
14
 
15
15
  def get_binding
@@ -1,3 +1,3 @@
1
1
  module GitHealthCheck
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -2,13 +2,13 @@ module GitHealthCheck
2
2
 
3
3
  class WorkingCopy
4
4
 
5
- def initialize(repository)
6
- @repository = repository
7
- @git_lib = GitHealthCheck::GitLib.new repository
5
+ def initialize(options)
6
+ @limit = options[:limit]
7
+ @git_lib = GitHealthCheck::GitLib.new
8
8
  end
9
9
 
10
- def find_in_working_copy(number=10)
11
- largest_files = @git_lib.get_largest_files number
10
+ def find_in_working_copy
11
+ largest_files = @git_lib.get_largest_files @limit
12
12
  largest_files = largest_files.split "\n"
13
13
 
14
14
  files = []
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-health-check
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-08 00:00:00.000000000 Z
12
+ date: 2013-02-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruport