hoc 0.3 → 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.
- data/.rultor.yml +5 -0
- data/.travis.yml +5 -2
- data/README.md +7 -0
- data/lib/hoc/git.rb +9 -7
- data/lib/hoc/svn.rb +3 -2
- data/lib/hoc/version.rb +1 -1
- data/test/test_git.rb +3 -5
- data/test/test_hoc.rb +2 -2
- data/test/test_svn.rb +1 -1
- metadata +1 -1
data/.rultor.yml
CHANGED
@@ -5,6 +5,11 @@ assets:
|
|
5
5
|
install: |
|
6
6
|
sudo gem install pdd
|
7
7
|
sudo apt-get install -y subversion diffstat
|
8
|
+
sudo apt-get install -y software-properties-common
|
9
|
+
sudo add-apt-repository -y ppa:git-core/ppa
|
10
|
+
sudo apt-get update
|
11
|
+
sudo apt-get remove -y git
|
12
|
+
sudo apt-get install -y git
|
8
13
|
|
9
14
|
release:
|
10
15
|
script: |
|
data/.travis.yml
CHANGED
@@ -6,8 +6,11 @@ branches:
|
|
6
6
|
install:
|
7
7
|
- travis_retry sudo apt-get update
|
8
8
|
- travis_retry sudo apt-get install -y diffstat
|
9
|
-
- travis_retry sudo apt-get
|
10
|
-
- travis_retry sudo apt-
|
9
|
+
- travis_retry sudo apt-get remove -y subversion git
|
10
|
+
- travis_retry sudo add-apt-repository "deb http://ppa.launchpad.net/svn/ppa/ubuntu precise main"
|
11
|
+
- travis_retry sudo add-apt-repository -y ppa:git-core/ppa
|
12
|
+
- travis_retry sudo apt-get update
|
13
|
+
- travis_retry sudo apt-get install -y subversion git
|
11
14
|
- travis_retry bundle install
|
12
15
|
script:
|
13
16
|
- rake
|
data/README.md
CHANGED
@@ -7,6 +7,11 @@
|
|
7
7
|
[](https://codeclimate.com/github/teamed/hoc)
|
8
8
|
[](https://coveralls.io/r/teamed/hoc)
|
9
9
|
|
10
|
+
It is a command line tool to calculate Hits-of-Code metric
|
11
|
+
in a source code repository (at the moment we support Git 2+ and Subversion 1.7+).
|
12
|
+
You can read more about Hits-of-Code metric in this blog post:
|
13
|
+
[Hits-of-Code Instead of SLoC](http://www.yegor256.com/2014/11/14/hits-of-code.html).
|
14
|
+
|
10
15
|
Install it first:
|
11
16
|
|
12
17
|
```bash
|
@@ -18,3 +23,5 @@ Run it locally and read its output:
|
|
18
23
|
```bash
|
19
24
|
$ hoc --help
|
20
25
|
```
|
26
|
+
|
27
|
+
|
data/lib/hoc/git.rb
CHANGED
@@ -32,16 +32,18 @@ module HOC
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def hits
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
version = `git --version`.split(/ /)[2]
|
36
|
+
fail "git version #{version} is too old, upgrade it to 2.0+" unless
|
37
|
+
Gem::Version.new(version) >= Gem::Version.new('2.0')
|
38
|
+
log = `git '--git-dir=#{@dir}/.git' log --pretty=tformat: --numstat`
|
39
|
+
[
|
38
40
|
Hits.new(
|
39
|
-
|
40
|
-
|
41
|
-
|
41
|
+
Time.now,
|
42
|
+
log.split(/\n/).map do |t|
|
43
|
+
t.split(/\t/).take(2).map { |s| s.to_i }.inject(:+)
|
42
44
|
end.inject(:+)
|
43
45
|
)
|
44
|
-
|
46
|
+
]
|
45
47
|
end
|
46
48
|
end
|
47
49
|
end
|
data/lib/hoc/svn.rb
CHANGED
@@ -33,9 +33,10 @@ module HOC
|
|
33
33
|
|
34
34
|
def hits
|
35
35
|
version = `svn --version --quiet`
|
36
|
-
fail "svn version #{version} is too old" unless
|
36
|
+
fail "svn version #{version} is too old, upgrade it to 1.7+" unless
|
37
37
|
Gem::Version.new(version) >= Gem::Version.new('1.7')
|
38
|
-
fail 'diffstat is not installed' if
|
38
|
+
fail 'diffstat is not installed' if
|
39
|
+
`diffstat -V`.index('version').nil?
|
39
40
|
log = `cd '#{@dir}'; svn log --diff | diffstat`
|
40
41
|
[
|
41
42
|
Hits.new(
|
data/lib/hoc/version.rb
CHANGED
data/test/test_git.rb
CHANGED
@@ -32,7 +32,7 @@ require 'tmpdir'
|
|
32
32
|
class TestGit < Minitest::Test
|
33
33
|
def test_parsing
|
34
34
|
Dir.mktmpdir 'test' do |dir|
|
35
|
-
system("
|
35
|
+
fail unless system("
|
36
36
|
set -e
|
37
37
|
cd '#{dir}'
|
38
38
|
git init .
|
@@ -47,10 +47,8 @@ class TestGit < Minitest::Test
|
|
47
47
|
git commit -am 'delete line'
|
48
48
|
")
|
49
49
|
hits = HOC::Git.new(dir).hits
|
50
|
-
assert_equal
|
51
|
-
assert_equal
|
52
|
-
assert_equal 2, hits[1].total
|
53
|
-
assert_equal 1, hits[2].total
|
50
|
+
assert_equal 1, hits.size
|
51
|
+
assert_equal 4, hits[0].total
|
54
52
|
end
|
55
53
|
end
|
56
54
|
end
|
data/test/test_hoc.rb
CHANGED
@@ -33,7 +33,7 @@ require 'slop'
|
|
33
33
|
class TestHOC < Minitest::Test
|
34
34
|
def test_basic_git
|
35
35
|
Dir.mktmpdir 'test' do |dir|
|
36
|
-
system("
|
36
|
+
fail unless system("
|
37
37
|
set -e
|
38
38
|
cd '#{dir}'
|
39
39
|
git init .
|
@@ -49,7 +49,7 @@ class TestHOC < Minitest::Test
|
|
49
49
|
|
50
50
|
def test_basic_svn
|
51
51
|
Dir.mktmpdir 'test' do |dir|
|
52
|
-
system("
|
52
|
+
fail unless system("
|
53
53
|
set -e
|
54
54
|
cd '#{dir}'
|
55
55
|
svnadmin create base
|
data/test/test_svn.rb
CHANGED