houston-core 0.6.0 → 0.6.1
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/Gemfile.lock +69 -68
- data/app/adapters/houston/adapters/deployment/engineyard.rb +1 -1
- data/app/adapters/houston/adapters/version_control/git_adapter/github_repo.rb +19 -0
- data/app/adapters/houston/adapters/version_control/git_adapter/remote_repo.rb +27 -0
- data/app/assets/images/drag-grip.png +0 -0
- data/app/assets/javascripts/app/infinite_scroll.coffee +1 -1
- data/app/assets/javascripts/app/views/_show_sprint_view.coffee +9 -9
- data/app/assets/javascripts/application.js +1 -0
- data/app/assets/javascripts/core/app.coffee +5 -0
- data/app/assets/javascripts/{app → core}/stacked_area_graph.coffee +0 -0
- data/app/assets/javascripts/{app → core}/stacked_bar_graph.coffee +0 -0
- data/app/assets/javascripts/dashboard.js +1 -0
- data/app/assets/javascripts/vendor.js +0 -1
- data/app/assets/stylesheets/application/exceptions.scss +3 -1
- data/app/assets/stylesheets/application/navigation.scss +84 -21
- data/app/assets/stylesheets/application/releases.scss +32 -2
- data/app/assets/stylesheets/application/test.scss +34 -0
- data/app/assets/stylesheets/core/colors.scss.erb +33 -3
- data/app/assets/stylesheets/dashboard/dashboard.scss +11 -7
- data/app/assets/stylesheets/variables.scss +3 -0
- data/app/concerns/belongs_to_commit.rb +14 -0
- data/app/concerns/project_adapter.rb +24 -6
- data/app/controllers/api/v1/projects_controller.rb +18 -0
- data/app/controllers/api/v1/sprint_tasks_controller.rb +1 -1
- data/app/controllers/deploys_controller.rb +1 -0
- data/app/controllers/project_tests_controller.rb +49 -19
- data/app/controllers/releases_controller.rb +5 -0
- data/app/controllers/test_runs_controller.rb +16 -1
- data/app/helpers/test_run_helper.rb +24 -0
- data/app/models/deploy.rb +13 -0
- data/app/models/github/pull_request.rb +39 -4
- data/app/models/release.rb +42 -0
- data/app/models/task.rb +3 -2
- data/app/models/test_run.rb +4 -0
- data/app/presenters/project_presenter.rb +28 -0
- data/app/views/deploys/show.html.erb +4 -0
- data/app/views/github/pulls/index.html.erb +4 -1
- data/app/views/layouts/_mobile_navigation.html.erb +14 -17
- data/app/views/layouts/_navigation.html.erb +87 -87
- data/app/views/layouts/dashboard.html.erb +2 -2
- data/app/views/project_tests/index.html.erb +22 -7
- data/app/views/releases/_index.html.erb +65 -0
- data/app/views/releases/_results.html.erb +47 -0
- data/app/views/releases/index.html.erb +29 -65
- data/app/views/sprints/dashboard.html.erb +4 -2
- data/config/environments/production.rb +1 -1
- data/config/environments/test.rb +4 -1
- data/config/initializers/add_navigation_renderers.rb +6 -0
- data/config/initializers/requirements.rb +1 -0
- data/config/routes.rb +3 -0
- data/db/migrate/20151226154901_add_search_vector_to_releases.rb +6 -0
- data/db/migrate/20151226155305_generate_index_on_releases.rb +5 -0
- data/db/migrate/20151228183704_drop_unused_tables.rb +35 -0
- data/db/migrate/20160120145757_add_successful_to_deploys.rb +10 -0
- data/db/structure.sql +19 -67
- data/houston.gemspec +3 -3
- data/lib/configuration.rb +4 -2
- data/lib/core_ext/array.rb +37 -0
- data/lib/houston/version.rb +1 -1
- data/test/integration/ci_integration_test.rb +14 -13
- data/test/unit/models/project_test.rb +33 -0
- data/test/unit/models/pull_request_test.rb +71 -1
- metadata +24 -14
- data/app/models/historical_head.rb +0 -5
data/lib/configuration.rb
CHANGED
@@ -186,8 +186,9 @@ module Houston
|
|
186
186
|
|
187
187
|
|
188
188
|
def project_colors(*args)
|
189
|
-
|
190
|
-
@project_colors
|
189
|
+
new_hash = Hash.new(ColorValue.new("505050"))
|
190
|
+
@project_colors = args.first.each_with_object(new_hash) { |(key, hex), hash| hash[key] = ColorValue.new(hex) } if args.any?
|
191
|
+
@project_colors ||= new_hash
|
191
192
|
end
|
192
193
|
|
193
194
|
def environments(*args)
|
@@ -600,6 +601,7 @@ module Houston
|
|
600
601
|
|
601
602
|
|
602
603
|
class ColorValue
|
604
|
+
attr_reader :hex
|
603
605
|
|
604
606
|
def initialize(hex)
|
605
607
|
@hex = hex
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module CalculatePercentiles
|
2
|
+
|
3
|
+
# Returns the mean of all elements in array; nil if array is empty
|
4
|
+
def mean
|
5
|
+
return nil if self.length == 0
|
6
|
+
self.sum / self.length
|
7
|
+
end
|
8
|
+
|
9
|
+
# Returns the percentile value for percentile _p_; nil if array is empty.
|
10
|
+
#
|
11
|
+
# _p_ should be expressed as an integer; <tt>percentile(90)</tt> returns the 90th percentile of the array.
|
12
|
+
#
|
13
|
+
# Algorithm from NIST[http://www.itl.nist.gov/div898/handbook/prc/section2/prc252.htm]
|
14
|
+
# Implementation from https://github.com/bkoski/array_stats/pull/3
|
15
|
+
def percentile(p)
|
16
|
+
sorted_array = self.sort
|
17
|
+
rank = (p.to_f / 100) * (self.length + 1)
|
18
|
+
|
19
|
+
return nil if self.length == 0
|
20
|
+
|
21
|
+
if rank.truncate > 0 && rank.truncate < self.length
|
22
|
+
sample_0 = sorted_array[rank.truncate - 1]
|
23
|
+
sample_1 = sorted_array[rank.truncate]
|
24
|
+
|
25
|
+
# Returns the fractional part of a float. For example, <tt>(6.67).fractional_part == 0.67</tt>
|
26
|
+
fractional_part = (rank - rank.truncate).abs
|
27
|
+
(fractional_part * (sample_1 - sample_0)) + sample_0
|
28
|
+
elsif rank.truncate == 0
|
29
|
+
sorted_array.first.to_f
|
30
|
+
elsif rank.truncate == self.length
|
31
|
+
sorted_array.last.to_f
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
Array.send :include, CalculatePercentiles
|
data/lib/houston/version.rb
CHANGED
@@ -4,6 +4,7 @@ require "support/houston/adapters/ci_server/mock_adapter"
|
|
4
4
|
|
5
5
|
# Tests config/initializers/run_tests_on_post_receive.rb
|
6
6
|
class CIIntegrationTest < ActionDispatch::IntegrationTest
|
7
|
+
attr_reader :project
|
7
8
|
|
8
9
|
|
9
10
|
context "Houston" do
|
@@ -14,7 +15,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
|
|
14
15
|
stub.instance_of(TestRun).validate! {}
|
15
16
|
|
16
17
|
assert_difference "TestRun.count", +1 do
|
17
|
-
post "/projects/#{
|
18
|
+
post "/projects/#{project.slug}/hooks/post_receive"
|
18
19
|
assert_response :success
|
19
20
|
end
|
20
21
|
end
|
@@ -23,7 +24,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
|
|
23
24
|
@project = create(:project, ci_server_name: "None")
|
24
25
|
|
25
26
|
assert_no_difference "TestRun.count" do
|
26
|
-
post "/projects/#{
|
27
|
+
post "/projects/#{project.slug}/hooks/post_receive"
|
27
28
|
assert_response :success
|
28
29
|
end
|
29
30
|
end
|
@@ -31,7 +32,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
|
|
31
32
|
should "alert maintainers when a build cannot be triggered" do
|
32
33
|
skip "TMI: This is dependent on configured roles!"
|
33
34
|
@project = create(:project, ci_server_name: "Mock")
|
34
|
-
|
35
|
+
project.add_teammate users(:boblail)
|
35
36
|
|
36
37
|
any_instance_of(Houston::Adapters::CIServer::MockAdapter::Job) do |job|
|
37
38
|
stub(job).build! { |commit| raise Houston::Adapters::CIServer::Error }
|
@@ -41,7 +42,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
|
|
41
42
|
stub.instance_of(TestRun).validate! {}
|
42
43
|
|
43
44
|
assert_no_difference "TestRun.count" do
|
44
|
-
post "/projects/#{
|
45
|
+
post "/projects/#{project.slug}/hooks/post_receive"
|
45
46
|
assert_response :success
|
46
47
|
|
47
48
|
configuration_error = ActionMailer::Base.deliveries.last
|
@@ -56,13 +57,13 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
|
|
56
57
|
commit = "whatever"
|
57
58
|
results_url = "http://example.com/results"
|
58
59
|
@project = create(:project, ci_server_name: "Mock")
|
59
|
-
@test_run = TestRun.create!(project:
|
60
|
+
@test_run = TestRun.create!(project: project, sha: commit)
|
60
61
|
|
61
62
|
any_instance_of(Houston::Adapters::CIServer::MockAdapter::Job) do |job|
|
62
63
|
mock(job).fetch_results!(results_url).returns({})
|
63
64
|
end
|
64
65
|
|
65
|
-
|
66
|
+
put "/projects/#{project.slug}/test_runs/#{commit}/results", {results_url: results_url}
|
66
67
|
assert_response :success
|
67
68
|
end
|
68
69
|
|
@@ -70,14 +71,14 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
|
|
70
71
|
commit = "whatever"
|
71
72
|
results_url = "http://example.com/results"
|
72
73
|
@project = create(:project, ci_server_name: "Mock")
|
73
|
-
|
74
|
-
@test_run = TestRun.create!(project:
|
74
|
+
project.add_teammate users(:boblail)
|
75
|
+
@test_run = TestRun.create!(project: project, sha: commit)
|
75
76
|
|
76
77
|
any_instance_of(Houston::Adapters::CIServer::MockAdapter::Job) do |job|
|
77
78
|
mock(job).fetch_results!(results_url) { raise Houston::Adapters::CIServer::Error }
|
78
79
|
end
|
79
80
|
|
80
|
-
|
81
|
+
put "/projects/#{project.slug}/test_runs/#{commit}/results", {results_url: results_url}
|
81
82
|
|
82
83
|
assert_equal "error", @test_run.reload.result
|
83
84
|
end
|
@@ -86,7 +87,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
|
|
86
87
|
|
87
88
|
should "fire test_run:complete when the results of the test run are saved" do
|
88
89
|
@project = create(:project, ci_server_name: "Mock")
|
89
|
-
test_run = TestRun.new(project:
|
90
|
+
test_run = TestRun.new(project: project, sha: "whatever")
|
90
91
|
|
91
92
|
any_instance_of(Houston::Adapters::CIServer::MockAdapter::Job) do |job|
|
92
93
|
stub(job).fetch_results! { |results_url| {result: "pass"} }
|
@@ -119,7 +120,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
|
|
119
120
|
slug: "fixture",
|
120
121
|
version_control_name: "Git",
|
121
122
|
extended_attributes: { "git_location" => "git@github.com:houston/fixture.git" })
|
122
|
-
test_run = TestRun.new(project:
|
123
|
+
test_run = TestRun.new(project: project, sha: "bd3e9e2")
|
123
124
|
|
124
125
|
expected_url = "https://api.github.com/repos/houston/fixture/statuses/bd3e9e2e4ddf89a640a4f880cbf55bb46cc7e88a?access_token=#{Houston.config.github[:access_token]}"
|
125
126
|
mock(Faraday).post(expected_url, /"state":"pending"/) do
|
@@ -140,7 +141,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
|
|
140
141
|
slug: "fixture",
|
141
142
|
version_control_name: "Git",
|
142
143
|
extended_attributes: { "git_location" => "git@github.com:houston/fixture.git" })
|
143
|
-
test_run = TestRun.new(project:
|
144
|
+
test_run = TestRun.new(project: project, sha: "bd3e9e2", result: :pass, completed_at: Time.now)
|
144
145
|
|
145
146
|
expected_url = "https://api.github.com/repos/houston/fixture/statuses/bd3e9e2e4ddf89a640a4f880cbf55bb46cc7e88a?access_token=#{Houston.config.github[:access_token]}"
|
146
147
|
mock(Faraday).post(expected_url, /"state":"success"/) do
|
@@ -154,7 +155,7 @@ class CIIntegrationTest < ActionDispatch::IntegrationTest
|
|
154
155
|
|
155
156
|
should "publish test results to CodeClimate" do
|
156
157
|
@project = create(:project, code_climate_repo_token: "repo_token")
|
157
|
-
test_run = TestRun.new(project:
|
158
|
+
test_run = TestRun.new(project: project, sha: "bd3e9e2", result: "pass", completed_at: Time.now, coverage: [
|
158
159
|
{ filename: "lib/test1.rb", coverage: [1,nil,nil,1,1,nil,1] },
|
159
160
|
{ filename: "lib/test2.rb", coverage: [1,nil,1,0,0,0,0,1,nil,1] }
|
160
161
|
])
|
@@ -5,6 +5,7 @@ require "support/houston/adapters/ci_server/mock_adapter"
|
|
5
5
|
|
6
6
|
|
7
7
|
class ProjectTest < ActiveSupport::TestCase
|
8
|
+
attr_reader :project
|
8
9
|
|
9
10
|
|
10
11
|
context "Validation:" do
|
@@ -55,4 +56,36 @@ class ProjectTest < ActiveSupport::TestCase
|
|
55
56
|
end
|
56
57
|
|
57
58
|
|
59
|
+
context "A project's bare repo," do
|
60
|
+
setup do
|
61
|
+
system "rm -rf #{Rails.root}/tmp/test-01.git"
|
62
|
+
system "cp -r #{Rails.root}/test/data/bare_repo.git #{Rails.root}/tmp/test-01.git"
|
63
|
+
@project = Project.create!(
|
64
|
+
name: "Test",
|
65
|
+
slug: "test-01",
|
66
|
+
version_control_name: "Git",
|
67
|
+
extended_attributes: {"git_location" => "git@github.com:houston/fixture.git"})
|
68
|
+
end
|
69
|
+
|
70
|
+
teardown do
|
71
|
+
system "rm -rf #{Rails.root}/tmp/test-*.git"
|
72
|
+
end
|
73
|
+
|
74
|
+
context "when the project's slug is changed," do
|
75
|
+
should "be moved" do
|
76
|
+
project.update_attributes slug: "test-02"
|
77
|
+
test01_exists = File.exists?("#{Rails.root}/tmp/test-01.git")
|
78
|
+
test02_exists = File.exists?("#{Rails.root}/tmp/test-02.git")
|
79
|
+
|
80
|
+
problems = []
|
81
|
+
problems << "tmp/test-01.git still exists" if test01_exists
|
82
|
+
problems << "tmp/test-02.git does not exist" unless test02_exists
|
83
|
+
|
84
|
+
assert problems.none?, "Expected tmp/test-01.git to have been renamed " <<
|
85
|
+
"to test-02.git, but #{problems.join(" and ")}"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
|
58
91
|
end
|
@@ -63,9 +63,11 @@ class PullRequestTest < ActiveSupport::TestCase
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
+
|
67
|
+
|
66
68
|
context "If there is already a local copy of that pull request," do
|
67
69
|
setup do
|
68
|
-
Github::PullRequest.create! { |pull|
|
70
|
+
@pull_request = Github::PullRequest.create! { |pull|
|
69
71
|
pull.merge_attributes @pull_request_payload }
|
70
72
|
end
|
71
73
|
|
@@ -80,6 +82,74 @@ class PullRequestTest < ActiveSupport::TestCase
|
|
80
82
|
assert_match /has already been taken/, pull_request.errors.full_messages.join(", ")
|
81
83
|
end
|
82
84
|
end
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
context "when the pull request is synchronized," do
|
89
|
+
context "and base_sha changes, it" do
|
90
|
+
setup do
|
91
|
+
pull_request.merge_attributes(
|
92
|
+
"user" => {},
|
93
|
+
"title" => "Divergent Branch",
|
94
|
+
"body" => "This is the description of the pull request",
|
95
|
+
"base" => { "sha" => "a5c551d52bb0bb8a702f70879ac9caeb12a721fc" },
|
96
|
+
"head" => { "sha" => "baa3ef218a40f23fe542f98d8b8e60a2e8e0bff0" })
|
97
|
+
end
|
98
|
+
|
99
|
+
should "associate itself with all the commits again" do
|
100
|
+
mock(pull_request.project.commits).between(
|
101
|
+
"a5c551d52bb0bb8a702f70879ac9caeb12a721fc",
|
102
|
+
"baa3ef218a40f23fe542f98d8b8e60a2e8e0bff0").once.returns([])
|
103
|
+
pull_request.save!
|
104
|
+
end
|
105
|
+
|
106
|
+
should "fire 'github:pull:synchronize'" do
|
107
|
+
assert_triggered "github:pull:synchronize" do
|
108
|
+
pull_request.save!
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
context "and head_sha changes, it" do
|
114
|
+
setup do
|
115
|
+
pull_request.merge_attributes(
|
116
|
+
"user" => {},
|
117
|
+
"title" => "Divergent Branch",
|
118
|
+
"body" => "This is the description of the pull request",
|
119
|
+
"base" => { "sha" => "e0e4580f44317a084dd5142fef6b4144a4394819" },
|
120
|
+
"head" => { "sha" => "a5c551d52bb0bb8a702f70879ac9caeb12a721fc" })
|
121
|
+
end
|
122
|
+
|
123
|
+
should "associate itself with all the commits again" do
|
124
|
+
mock(pull_request.project.commits).between(
|
125
|
+
"e0e4580f44317a084dd5142fef6b4144a4394819",
|
126
|
+
"a5c551d52bb0bb8a702f70879ac9caeb12a721fc").once.returns([])
|
127
|
+
pull_request.save!
|
128
|
+
end
|
129
|
+
|
130
|
+
should "fire 'github:pull:synchronize'" do
|
131
|
+
assert_triggered "github:pull:synchronize" do
|
132
|
+
pull_request.save!
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
context "and neither base_sha nor head_sha changes, it" do
|
138
|
+
setup do
|
139
|
+
pull_request.merge_attributes(
|
140
|
+
"user" => {},
|
141
|
+
"title" => "Divergent Branch",
|
142
|
+
"body" => "This is the description of the pull request",
|
143
|
+
"base" => { "sha" => "e0e4580f44317a084dd5142fef6b4144a4394819" },
|
144
|
+
"head" => { "sha" => "baa3ef218a40f23fe542f98d8b8e60a2e8e0bff0" })
|
145
|
+
end
|
146
|
+
|
147
|
+
should "not associate itself with all the commits again" do
|
148
|
+
mock(pull_request.project.commits).between.never
|
149
|
+
pull_request.save!
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
83
153
|
end
|
84
154
|
end
|
85
155
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: houston-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Lail
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.2.5
|
19
|
+
version: 4.2.5.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.2.5
|
26
|
+
version: 4.2.5.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: sprockets
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,14 +184,14 @@ dependencies:
|
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: 0.
|
187
|
+
version: 0.9.2
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: 0.
|
194
|
+
version: 0.9.2
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: faraday-http-cache
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -280,16 +280,16 @@ dependencies:
|
|
280
280
|
name: nokogiri
|
281
281
|
requirement: !ruby/object:Gem::Requirement
|
282
282
|
requirements:
|
283
|
-
- - "
|
283
|
+
- - ">="
|
284
284
|
- !ruby/object:Gem::Version
|
285
|
-
version:
|
285
|
+
version: '0'
|
286
286
|
type: :runtime
|
287
287
|
prerelease: false
|
288
288
|
version_requirements: !ruby/object:Gem::Requirement
|
289
289
|
requirements:
|
290
|
-
- - "
|
290
|
+
- - ">="
|
291
291
|
- !ruby/object:Gem::Version
|
292
|
-
version:
|
292
|
+
version: '0'
|
293
293
|
- !ruby/object:Gem::Dependency
|
294
294
|
name: houston-oauth-plugin
|
295
295
|
requirement: !ruby/object:Gem::Requirement
|
@@ -775,6 +775,7 @@ files:
|
|
775
775
|
- app/assets/images/bug-open-32.png
|
776
776
|
- app/assets/images/bug-zero-128.png
|
777
777
|
- app/assets/images/bug-zero-48.png
|
778
|
+
- app/assets/images/drag-grip.png
|
778
779
|
- app/assets/javascripts/app/boot.coffee
|
779
780
|
- app/assets/javascripts/app/emoji.coffee.erb
|
780
781
|
- app/assets/javascripts/app/infinite_scroll.coffee
|
@@ -787,8 +788,6 @@ files:
|
|
787
788
|
- app/assets/javascripts/app/models/user.coffee
|
788
789
|
- app/assets/javascripts/app/mousetrap-bind-scoped.js
|
789
790
|
- app/assets/javascripts/app/releases.coffee
|
790
|
-
- app/assets/javascripts/app/stacked_area_graph.coffee
|
791
|
-
- app/assets/javascripts/app/stacked_bar_graph.coffee
|
792
791
|
- app/assets/javascripts/app/table_row_expander.coffee
|
793
792
|
- app/assets/javascripts/app/ticket_tracker_refresh.coffee
|
794
793
|
- app/assets/javascripts/app/views/_show_sprint_view.coffee
|
@@ -817,6 +816,8 @@ files:
|
|
817
816
|
- app/assets/javascripts/core/handlebars_helpers.coffee
|
818
817
|
- app/assets/javascripts/core/helpers.coffee
|
819
818
|
- app/assets/javascripts/core/jquery_extensions.coffee
|
819
|
+
- app/assets/javascripts/core/stacked_area_graph.coffee
|
820
|
+
- app/assets/javascripts/core/stacked_bar_graph.coffee
|
820
821
|
- app/assets/javascripts/dashboard.js
|
821
822
|
- app/assets/javascripts/dashboard/refresher.coffee
|
822
823
|
- app/assets/javascripts/vendor.js
|
@@ -875,6 +876,7 @@ files:
|
|
875
876
|
- app/assets/stylesheets/dashboard.css
|
876
877
|
- app/assets/stylesheets/dashboard/dashboard.scss
|
877
878
|
- app/assets/stylesheets/print.css.scss
|
879
|
+
- app/assets/stylesheets/variables.scss
|
878
880
|
- app/assets/stylesheets/vendor.css
|
879
881
|
- app/assets/templates/commit.hbs
|
880
882
|
- app/assets/templates/keyboard_shortcuts.hbs
|
@@ -913,6 +915,7 @@ files:
|
|
913
915
|
- app/concerns/retirement.rb
|
914
916
|
- app/concerns/ticket_synchronizer.rb
|
915
917
|
- app/concerns/unique_add.rb
|
918
|
+
- app/controllers/api/v1/projects_controller.rb
|
916
919
|
- app/controllers/api/v1/sprint_tasks_controller.rb
|
917
920
|
- app/controllers/api/v1/ticket_tasks_controller.rb
|
918
921
|
- app/controllers/application_controller.rb
|
@@ -1011,7 +1014,6 @@ files:
|
|
1011
1014
|
- app/models/github/pull_request_event.rb
|
1012
1015
|
- app/models/github/unauthorized.rb
|
1013
1016
|
- app/models/github_token.rb
|
1014
|
-
- app/models/historical_head.rb
|
1015
1017
|
- app/models/key_dependency.rb
|
1016
1018
|
- app/models/maintenance_light.rb
|
1017
1019
|
- app/models/measurement.rb
|
@@ -1056,6 +1058,7 @@ files:
|
|
1056
1058
|
- app/presenters/full_ticket_presenter.rb
|
1057
1059
|
- app/presenters/one_or_many.rb
|
1058
1060
|
- app/presenters/problem_presenter.rb
|
1061
|
+
- app/presenters/project_presenter.rb
|
1059
1062
|
- app/presenters/release_presenter.rb
|
1060
1063
|
- app/presenters/sprint_task_presenter.rb
|
1061
1064
|
- app/presenters/task_presenter.rb
|
@@ -1131,7 +1134,9 @@ files:
|
|
1131
1134
|
- app/views/releases/_changelog.html.erb
|
1132
1135
|
- app/views/releases/_commits.html.erb
|
1133
1136
|
- app/views/releases/_form.html.erb
|
1137
|
+
- app/views/releases/_index.html.erb
|
1134
1138
|
- app/views/releases/_new_release.html.erb
|
1139
|
+
- app/views/releases/_results.html.erb
|
1135
1140
|
- app/views/releases/_tickets.html.erb
|
1136
1141
|
- app/views/releases/edit.html.erb
|
1137
1142
|
- app/views/releases/index.html.erb
|
@@ -1392,10 +1397,15 @@ files:
|
|
1392
1397
|
- db/migrate/20151205214647_add_avatar_url_to_pull_requests.rb
|
1393
1398
|
- db/migrate/20151209004458_add_json_labels_to_pull_requests.rb
|
1394
1399
|
- db/migrate/20151209030113_add_timestamps_to_pull_requests.rb
|
1400
|
+
- db/migrate/20151226154901_add_search_vector_to_releases.rb
|
1401
|
+
- db/migrate/20151226155305_generate_index_on_releases.rb
|
1402
|
+
- db/migrate/20151228183704_drop_unused_tables.rb
|
1403
|
+
- db/migrate/20160120145757_add_successful_to_deploys.rb
|
1395
1404
|
- db/seeds.rb
|
1396
1405
|
- db/structure.sql
|
1397
1406
|
- houston.gemspec
|
1398
1407
|
- lib/configuration.rb
|
1408
|
+
- lib/core_ext/array.rb
|
1399
1409
|
- lib/core_ext/duration.rb
|
1400
1410
|
- lib/core_ext/exception.rb
|
1401
1411
|
- lib/core_ext/hash.rb
|
@@ -3449,7 +3459,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
3449
3459
|
version: '0'
|
3450
3460
|
requirements: []
|
3451
3461
|
rubyforge_project:
|
3452
|
-
rubygems_version: 2.
|
3462
|
+
rubygems_version: 2.2.2
|
3453
3463
|
signing_key:
|
3454
3464
|
specification_version: 4
|
3455
3465
|
summary: Mission Control for your projects and teams
|