jiragit 0.5.1 → 0.5.3
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
- data/Rakefile +1 -1
- data/hooks/post-checkout +10 -3
- data/lib/jiragit.rb +1 -0
- data/lib/jiragit/cli.rb +21 -9
- data/lib/jiragit/git/commit.rb +43 -0
- data/lib/jiragit/git/repository.rb +7 -0
- data/lib/jiragit/jira_store.rb +5 -1
- data/lib/jiragit/version.rb +1 -1
- data/spec/branch_spec.rb +14 -0
- data/spec/test_support.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3934b14132024fc659b50eeee4af934b9c4a873f
|
4
|
+
data.tar.gz: c34ecbdfddfba26150405510569a76d16a24c054
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f22b118a55b3dacc7242f8369b98f47af5c6475bb64ac130afef0c9ab8e15c73d6c7e81750a1e8770d73f66c609cd4bf45ee7310a3f56317917bcea0a6e4ba6d
|
7
|
+
data.tar.gz: 25ec4819eb6df828f20338bd5d9615eeb3c72d1a4f63100bdf8c7d2fa4a7580c59df6204b9c04d5e224c5c556538f6ce0881cd7f1233ce664ed678746e124486
|
data/Rakefile
CHANGED
data/hooks/post-checkout
CHANGED
@@ -23,11 +23,11 @@ def branch_switch?
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def current_branch
|
26
|
-
Jiragit::Git.current_branch
|
26
|
+
@current_branch ||= Jiragit::Git.current_branch
|
27
27
|
end
|
28
28
|
|
29
29
|
def previous_branch
|
30
|
-
Jiragit::Git.previous_branch
|
30
|
+
@previous_branch ||= Jiragit::Git.previous_branch
|
31
31
|
end
|
32
32
|
|
33
33
|
def new_branch?
|
@@ -84,8 +84,15 @@ def message_jiras_related_to_current_branch
|
|
84
84
|
message("JIRA(s): #{related_jiras(branch: current_branch).join(', ')}")
|
85
85
|
end
|
86
86
|
|
87
|
+
def jiras_from_current_branch_name
|
88
|
+
current_branch.scan(/([A-Z]{1,4}-[1-9][0-9]{0,6})/).to_a
|
89
|
+
end
|
90
|
+
|
87
91
|
def query_for_related_jiras
|
88
|
-
|
92
|
+
related = related_jiras(branch: previous_branch)
|
93
|
+
branch = jiras_from_current_branch_name
|
94
|
+
puts "default branch: #{branch}"
|
95
|
+
default = [related, branch].flatten.join(', ')
|
89
96
|
query("What is the JIRA Number?", default)
|
90
97
|
end
|
91
98
|
|
data/lib/jiragit.rb
CHANGED
data/lib/jiragit/cli.rb
CHANGED
@@ -12,7 +12,8 @@ module Jiragit
|
|
12
12
|
:remote,
|
13
13
|
:local,
|
14
14
|
:configure,
|
15
|
-
:configuration
|
15
|
+
:configuration,
|
16
|
+
:build
|
16
17
|
]
|
17
18
|
|
18
19
|
FLAGS = [
|
@@ -68,21 +69,18 @@ module Jiragit
|
|
68
69
|
return
|
69
70
|
end
|
70
71
|
puts "Listing all relations for jira #{@params[0]}"
|
71
|
-
|
72
|
-
puts js.relations(jira: @params[0]).to_a
|
72
|
+
puts jira_store.relations(jira: @params[0]).to_a
|
73
73
|
end
|
74
74
|
|
75
75
|
def branch
|
76
76
|
branch = @params[0] || Jiragit::Git.current_branch
|
77
77
|
puts "Listing all relations for branch #{branch}"
|
78
|
-
|
79
|
-
puts js.relations(branch: branch).to_a
|
78
|
+
puts jira_store.relations(branch: branch).to_a
|
80
79
|
end
|
81
80
|
|
82
81
|
def jira_branch
|
83
82
|
puts "Relating jira #{@params[0]} and branch #{@params[1]}"
|
84
|
-
|
85
|
-
js.relate(jira: @params[0], branch: @params[1])
|
83
|
+
jira_store.relate(jira: @params[0], branch: @params[1])
|
86
84
|
end
|
87
85
|
|
88
86
|
def browse
|
@@ -135,8 +133,23 @@ module Jiragit
|
|
135
133
|
end
|
136
134
|
end
|
137
135
|
|
136
|
+
def build
|
137
|
+
commits = Jiragit::Git.log
|
138
|
+
commits.each do |commit|
|
139
|
+
commit.jiras.each do |jira|
|
140
|
+
puts "relating: commit #{commit.sha} to jira: #{jira}"
|
141
|
+
jira_store.relate(commit: commit.sha, jira: jira, save: false)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
jira_store.save
|
145
|
+
end
|
146
|
+
|
138
147
|
private
|
139
148
|
|
149
|
+
def jira_store
|
150
|
+
@jira_store ||= JiraStore.new("#{Jiragit::Git.repository_root}/.git/jiragit/jira_store")
|
151
|
+
end
|
152
|
+
|
140
153
|
def run(command)
|
141
154
|
`#{command}`
|
142
155
|
end
|
@@ -192,8 +205,7 @@ module Jiragit
|
|
192
205
|
end
|
193
206
|
|
194
207
|
def related(type, relation)
|
195
|
-
|
196
|
-
jiras = js
|
208
|
+
jiras = jira_store
|
197
209
|
.relations(relation)
|
198
210
|
.to_a
|
199
211
|
.select { |r| r.type == type }
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Jiragit
|
2
|
+
|
3
|
+
module Git
|
4
|
+
|
5
|
+
class Commit
|
6
|
+
|
7
|
+
attr_accessor :log
|
8
|
+
|
9
|
+
def initialize(log)
|
10
|
+
@log = log
|
11
|
+
end
|
12
|
+
|
13
|
+
def sha
|
14
|
+
@sha ||= log[/(?<=commit )[0-9a-f]{40}/]
|
15
|
+
end
|
16
|
+
|
17
|
+
def date
|
18
|
+
@date ||= log[/(?<=Date:)\s+\b.*?$/].gsub(/^\s+/,'')
|
19
|
+
end
|
20
|
+
|
21
|
+
def author
|
22
|
+
@author ||= log[/(?<=Author:)\s+\b.*?$/].gsub(/^\s+/,'')
|
23
|
+
end
|
24
|
+
|
25
|
+
def merge
|
26
|
+
@merge ||= log[/(?<=Merge:)\s+\b.*?$/].gsub(/^\s+/,'')
|
27
|
+
end
|
28
|
+
|
29
|
+
def body
|
30
|
+
@body ||= log.gsub(/^.*Date:.*?\n/m,'')
|
31
|
+
end
|
32
|
+
|
33
|
+
IS_JIRA = /\b([A-Z]{1,4}-[1-9][0-9]{0,6})\b/
|
34
|
+
|
35
|
+
def jiras
|
36
|
+
@jiras ||= log.scan(IS_JIRA).to_a.flatten.uniq
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -101,6 +101,13 @@ module Jiragit
|
|
101
101
|
value
|
102
102
|
end
|
103
103
|
|
104
|
+
def self.log
|
105
|
+
log = `git log 2>&1`.chomp
|
106
|
+
raise NoRepositoryError if log=~/^Not a git repository/
|
107
|
+
commits = log.split(/(?=commit [0-9a-f]{40})/)
|
108
|
+
commits.map { |commit| Commit.new(commit) }
|
109
|
+
end
|
110
|
+
|
104
111
|
class Repository
|
105
112
|
|
106
113
|
def self.create(path)
|
data/lib/jiragit/jira_store.rb
CHANGED
@@ -11,7 +11,7 @@ module Jiragit
|
|
11
11
|
def relate(params)
|
12
12
|
tags = extract_tags(params).compact
|
13
13
|
vault.relate(*tags)
|
14
|
-
vault.save
|
14
|
+
vault.save unless params[:save] == false
|
15
15
|
end
|
16
16
|
|
17
17
|
def relations(params)
|
@@ -26,6 +26,10 @@ module Jiragit
|
|
26
26
|
vault.load
|
27
27
|
end
|
28
28
|
|
29
|
+
def save
|
30
|
+
vault.save
|
31
|
+
end
|
32
|
+
|
29
33
|
private
|
30
34
|
|
31
35
|
attr_accessor :location
|
data/lib/jiragit/version.rb
CHANGED
data/spec/branch_spec.rb
CHANGED
@@ -42,6 +42,20 @@ describe "Repository Branching Behaviors" do
|
|
42
42
|
|
43
43
|
end
|
44
44
|
|
45
|
+
context "the new branch name includes a jira" do
|
46
|
+
|
47
|
+
before do
|
48
|
+
checkout_a_new_branch('parent_branch')
|
49
|
+
@repo.make_a_commit
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should provide and accept default jira from branch name" do
|
53
|
+
checkout_a_new_branch_with_default('PA-12345_branch')
|
54
|
+
assert_relation({jira: 'PA-12345'}, {branch: 'PA-12345_branch'})
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
45
59
|
end
|
46
60
|
|
47
61
|
context "when checking out an existing branch" do
|
data/spec/test_support.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jiragit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derrick Parkhurst
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- lib/jiragit/cli.rb
|
59
59
|
- lib/jiragit/configuration.rb
|
60
60
|
- lib/jiragit/git/branch.rb
|
61
|
+
- lib/jiragit/git/commit.rb
|
61
62
|
- lib/jiragit/git/commit_response.rb
|
62
63
|
- lib/jiragit/git/repository.rb
|
63
64
|
- lib/jiragit/jira_store.rb
|