git-reviewer 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.
- checksums.yaml +7 -0
- data/.solargraph.yml +33 -0
- data/.vscode/launch.json +14 -0
- data/Gemfile +13 -0
- data/Gemfile.lock +109 -0
- data/README.md +37 -0
- data/Rakefile +4 -0
- data/exe/git-reviewer +5 -0
- data/lib/gitreviewer/algorithm/myers.rb +169 -0
- data/lib/gitreviewer/analyze/analyzer.rb +172 -0
- data/lib/gitreviewer/analyze/blame_tree.rb +68 -0
- data/lib/gitreviewer/analyze/builder.rb +141 -0
- data/lib/gitreviewer/analyze/diff_tree.rb +154 -0
- data/lib/gitreviewer/analyze/result_item.rb +31 -0
- data/lib/gitreviewer/command.rb +112 -0
- data/lib/gitreviewer/config/configuration.rb +93 -0
- data/lib/gitreviewer/option/analyze_option.rb +85 -0
- data/lib/gitreviewer/option/init_option.rb +57 -0
- data/lib/gitreviewer/utils/checker.rb +63 -0
- data/lib/gitreviewer/utils/printer.rb +63 -0
- data/lib/gitreviewer/version.rb +3 -0
- data/lib/gitreviewer.rb +9 -0
- data/sig/git/reviewer.rbs +6 -0
- metadata +96 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
module GitReviewer
|
2
|
+
class Checker
|
3
|
+
# 判断当前是否在一个 Git 仓库中
|
4
|
+
def self.is_git_repository_exist?
|
5
|
+
cmd = "git rev-parse --is-inside-work-tree > /dev/null 2>&1"
|
6
|
+
success = system(cmd)
|
7
|
+
return success
|
8
|
+
end
|
9
|
+
|
10
|
+
# 判断 Git 分支是否存在
|
11
|
+
def self.is_git_branch_exist?(branch)
|
12
|
+
cmd = "git show-ref --verify --quiet refs/heads/#{branch}"
|
13
|
+
success = system(cmd)
|
14
|
+
return success
|
15
|
+
end
|
16
|
+
|
17
|
+
# 判断 {指定分支,指定文件} 是否存在
|
18
|
+
def self.is_file_exist?(branch, filename)
|
19
|
+
cmd = "git ls-tree -r #{branch} --name-only | grep '#{filename}' > /dev/null 2>&1"
|
20
|
+
success = system(cmd)
|
21
|
+
return success
|
22
|
+
end
|
23
|
+
|
24
|
+
# 判断一个文件是否为二进制文件
|
25
|
+
def self.is_file_binary?(branch, filename)
|
26
|
+
tmpfile = "/tmp/analyzer-tmp-file"
|
27
|
+
cmd = "git show #{branch}:#{filename.chomp} > #{tmpfile}"
|
28
|
+
`#{cmd}`
|
29
|
+
|
30
|
+
cmd = "file --mime #{tmpfile}"
|
31
|
+
result = `#{cmd}`
|
32
|
+
|
33
|
+
cmd = "rm #{tmpfile}"
|
34
|
+
`#{cmd}`
|
35
|
+
return result.include? 'charset=binary'
|
36
|
+
end
|
37
|
+
|
38
|
+
# 分析「指定分支、指定文件」的快照信息
|
39
|
+
def self.snapshot_of_blame_file(branch, filename)
|
40
|
+
cmd = "git blame #{branch} -l -c #{filename}"
|
41
|
+
result = `#{cmd}`
|
42
|
+
return result
|
43
|
+
end
|
44
|
+
|
45
|
+
# 分析两个分支之间修改的文件
|
46
|
+
def self.diff_files(source, target)
|
47
|
+
cmd = "git merge-base #{source} #{target}"
|
48
|
+
merge_base = `#{cmd}`
|
49
|
+
merge_base = merge_base.chomp
|
50
|
+
|
51
|
+
cmd = "git diff --name-only #{merge_base} #{source}"
|
52
|
+
result = `#{cmd}`
|
53
|
+
result = result.lines.map { |line| line.chomp }
|
54
|
+
return result
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.current_git_branch
|
58
|
+
cmd = "git symbolic-ref --short HEAD"
|
59
|
+
result = `#{cmd}`
|
60
|
+
return result.chomp
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module GitReviewer
|
2
|
+
class Printer
|
3
|
+
@@verbose = false
|
4
|
+
|
5
|
+
# 类方法,用于访问类变量
|
6
|
+
def self.verbose
|
7
|
+
@@verbose
|
8
|
+
end
|
9
|
+
|
10
|
+
# (可选)类方法,用于设置类变量
|
11
|
+
def self.verbose=(value)
|
12
|
+
@@verbose = value
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.put(content)
|
16
|
+
puts content
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.red(content)
|
20
|
+
puts "\033[0;31m#{content}\033[0m"
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.green(content)
|
24
|
+
puts "\033[0;32m#{content}\033[0m"
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.yellow(content)
|
28
|
+
puts "\033[0;33m#{content}\033[0m"
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.bold(content)
|
32
|
+
puts "\033[0;1m#{content} \033[0m"
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.verbose_put(content)
|
36
|
+
if @@verbose
|
37
|
+
puts content
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.verbose_red(content)
|
42
|
+
puts "\033[0;31m#{content}\033[0m"
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.verbose_green(content)
|
46
|
+
if @@verbose
|
47
|
+
puts "\033[0;32m#{content}\033[0m"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.verbose_yellow(content)
|
52
|
+
if @@verbose
|
53
|
+
puts "\033[0;33m#{content}\033[0m"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.verbose_bold(content)
|
58
|
+
if @@verbose
|
59
|
+
puts "\033[0;1m#{content} \033[0m"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/gitreviewer.rb
ADDED
metadata
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: git-reviewer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- baochuquan
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-05-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: claide
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: terminal-table
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Helps you solve the problem of who should review your code.
|
42
|
+
email:
|
43
|
+
- baochuquan@163.com
|
44
|
+
executables:
|
45
|
+
- git-reviewer
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- ".solargraph.yml"
|
50
|
+
- ".vscode/launch.json"
|
51
|
+
- Gemfile
|
52
|
+
- Gemfile.lock
|
53
|
+
- README.md
|
54
|
+
- Rakefile
|
55
|
+
- exe/git-reviewer
|
56
|
+
- lib/gitreviewer.rb
|
57
|
+
- lib/gitreviewer/algorithm/myers.rb
|
58
|
+
- lib/gitreviewer/analyze/analyzer.rb
|
59
|
+
- lib/gitreviewer/analyze/blame_tree.rb
|
60
|
+
- lib/gitreviewer/analyze/builder.rb
|
61
|
+
- lib/gitreviewer/analyze/diff_tree.rb
|
62
|
+
- lib/gitreviewer/analyze/result_item.rb
|
63
|
+
- lib/gitreviewer/command.rb
|
64
|
+
- lib/gitreviewer/config/configuration.rb
|
65
|
+
- lib/gitreviewer/option/analyze_option.rb
|
66
|
+
- lib/gitreviewer/option/init_option.rb
|
67
|
+
- lib/gitreviewer/utils/checker.rb
|
68
|
+
- lib/gitreviewer/utils/printer.rb
|
69
|
+
- lib/gitreviewer/version.rb
|
70
|
+
- sig/git/reviewer.rbs
|
71
|
+
homepage: https://github.com/baochuquan/git-reviewer
|
72
|
+
licenses: []
|
73
|
+
metadata:
|
74
|
+
homepage_uri: https://github.com/baochuquan/git-reviewer
|
75
|
+
source_code_uri: https://github.com/baochuquan/git-reviewer
|
76
|
+
changelog_uri: https://github.com/baochuquan/git-reviewer
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 2.6.0
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubygems_version: 3.0.3.1
|
93
|
+
signing_key:
|
94
|
+
specification_version: 4
|
95
|
+
summary: A git plugin that can automatically analyze code reviewers.
|
96
|
+
test_files: []
|