grog 0.0.4 → 0.0.5
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/README.rdoc +0 -1
- data/VERSION +1 -1
- data/features/grog.feature +1 -1
- data/lib/grog/git_log.rb +2 -1
- data/lib/grog/list_hash.rb +19 -0
- data/spec/grog/list_hash.rb +39 -0
- data/spec/test_git_repo.tgz +0 -0
- metadata +4 -1
data/README.rdoc
CHANGED
@@ -19,7 +19,6 @@ A wrapper script for git-log - shows subject, time and author of each commit plu
|
|
19
19
|
* Create --no-color option
|
20
20
|
* Improve performance by slashing some shell calls to git commands
|
21
21
|
* Accept a commit range as a command line parameter
|
22
|
-
* Fix tag/branch ambiguity issues
|
23
22
|
* Show 'shadows' or remote branches (commit that is the latest in common with a remote branch)
|
24
23
|
* Distinguish commits by user with different color
|
25
24
|
* Read user default options from a .grog file
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/features/grog.feature
CHANGED
@@ -8,7 +8,7 @@ Feature: default output of grog
|
|
8
8
|
When I run grog on the test git repo
|
9
9
|
Then the output ignoring colour codes should be
|
10
10
|
"""
|
11
|
-
6165a67 Commit B (Tom ten Thij) B(branch_b master) T(foo v2)
|
11
|
+
6165a67 Commit B (Tom ten Thij) B(branch_b master origin/master) T(foo v2)
|
12
12
|
bf5b520 Commit A (Tom ten Thij) B(branch_a foo) T(v1)
|
13
13
|
|
14
14
|
"""
|
data/lib/grog/git_log.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'term/ansicolor'
|
2
|
+
require 'grog/list_hash'
|
2
3
|
|
3
4
|
module Grog
|
4
5
|
class GitLog
|
@@ -114,7 +115,7 @@ module Grog
|
|
114
115
|
def get_all_branches
|
115
116
|
local_branches = branch_names_from_branch_command(:local)
|
116
117
|
remote_branches = branch_names_from_branch_command(:remote)
|
117
|
-
@branches =
|
118
|
+
@branches = Grog::ListHash.merge_lists(local_branches, remote_branches)
|
118
119
|
end
|
119
120
|
|
120
121
|
def get_all_tags
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Grog
|
2
|
+
class ListHash
|
3
|
+
# Merges hashes that have lists as values: when merging identical
|
4
|
+
# keys the lists are added
|
5
|
+
#
|
6
|
+
# Hash.merge_lists({:a => [1, 2]}, {:a => [3]}) => {:a => [1, 2, 3] }
|
7
|
+
def self.merge_lists(h1, h2)
|
8
|
+
merged_hash = h1.dup
|
9
|
+
h2.keys.each do |key|
|
10
|
+
if merged_hash.has_key?(key)
|
11
|
+
merged_hash[key] += h2[key]
|
12
|
+
else
|
13
|
+
merged_hash[key] = h2[key]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
merged_hash
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
require 'grog/list_hash'
|
3
|
+
|
4
|
+
describe Grog::ListHash do
|
5
|
+
it "should add lists that are the values of identical keys" do
|
6
|
+
hash1 = {:a => [1, 2], :b => [4]}
|
7
|
+
hash2 = {:a => [3], :c => [5]}
|
8
|
+
expected_hash = {:a => [1, 2, 3], :b => [4], :c => [5] }
|
9
|
+
Grog::ListHash.merge_lists(hash1, hash2).should == expected_hash
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should be an empty hash if both arguments are empty" do
|
13
|
+
Grog::ListHash.merge_lists({}, {}).should == {}
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should be the first hash if the second one is empty" do
|
17
|
+
hash = { :x => 3 }
|
18
|
+
Grog::ListHash.merge_lists(hash, {}).should == hash
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should be the second hash if the first one is empty" do
|
22
|
+
hash = { :x => 3 }
|
23
|
+
Grog::ListHash.merge_lists({}, hash).should == hash
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should not modify the first hash" do
|
27
|
+
hash1 = {:a => [1]}
|
28
|
+
hash2 = {:a => [2]}
|
29
|
+
Grog::ListHash.merge_lists(hash1, hash2)
|
30
|
+
hash1[:a].should == [1]
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should not modify the second hash" do
|
34
|
+
hash1 = {:a => [1]}
|
35
|
+
hash2 = {:a => [2]}
|
36
|
+
Grog::ListHash.merge_lists(hash1, hash2)
|
37
|
+
hash2[:a].should == [2]
|
38
|
+
end
|
39
|
+
end
|
data/spec/test_git_repo.tgz
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom ten Thij
|
@@ -76,8 +76,10 @@ files:
|
|
76
76
|
- features/support/env.rb
|
77
77
|
- lib/grog.rb
|
78
78
|
- lib/grog/git_log.rb
|
79
|
+
- lib/grog/list_hash.rb
|
79
80
|
- lib/grog/options.rb
|
80
81
|
- spec/grog/git_log_spec.rb
|
82
|
+
- spec/grog/list_hash.rb
|
81
83
|
- spec/grog/options_spec.rb
|
82
84
|
- spec/grog_spec.rb
|
83
85
|
- spec/spec.opts
|
@@ -113,6 +115,7 @@ specification_version: 3
|
|
113
115
|
summary: A wrapper script for git-log - shows subject, time and author of each commit plus branches and tags
|
114
116
|
test_files:
|
115
117
|
- spec/grog/git_log_spec.rb
|
118
|
+
- spec/grog/list_hash.rb
|
116
119
|
- spec/grog/options_spec.rb
|
117
120
|
- spec/grog_spec.rb
|
118
121
|
- spec/spec_helper.rb
|