diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2019-02-06 09:54:53 +0000 |
---|---|---|
committer | John Cai <jcai@gitlab.com> | 2019-02-11 10:44:06 -0800 |
commit | b502d90a9f0521247e8c42f1ed586f6f4a52507a (patch) | |
tree | d6808a5da1a71e6ceb6f6bf29d6b5b03a8248c7b | |
parent | 1f2f38f59a719f7dae110835b8beb3d94fdcd94d (diff) | |
download | gitlab-ce-add-client-for-count-diverging-commits.tar.gz |
Adapt that diverging commits could be just one baradd-client-for-count-diverging-commits
refactors the ui for diverging commits so that it's only a single
bar instead of two separate bars
-rw-r--r-- | GITALY_SERVER_VERSION | 2 | ||||
-rw-r--r-- | app/assets/stylesheets/pages/branches.scss | 13 | ||||
-rw-r--r-- | app/controllers/projects/branches_controller.rb | 3 | ||||
-rw-r--r-- | app/views/projects/branches/_branch.html.haml | 28 | ||||
-rw-r--r-- | locale/gitlab.pot | 3 | ||||
-rw-r--r-- | spec/features/projects/branches/user_views_branches_spec.rb | 2 | ||||
-rw-r--r-- | spec/lib/gitlab/git/repository_spec.rb | 12 |
7 files changed, 45 insertions, 18 deletions
diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 84cc529467b..744068368fb 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -1.18.0 +1.18.0
\ No newline at end of file diff --git a/app/assets/stylesheets/pages/branches.scss b/app/assets/stylesheets/pages/branches.scss index 38fec3f0aa8..ce0622b3d48 100644 --- a/app/assets/stylesheets/pages/branches.scss +++ b/app/assets/stylesheets/pages/branches.scss @@ -11,15 +11,24 @@ } .divergence-graph { + $graph-side-width: 80px; + $graph-separator-width: 1px; + padding: 0 6px; .graph-side { position: relative; - width: 80px; + width: $graph-side-width; height: 22px; padding: 5px 0 13px; float: left; + &.full { + width: $graph-side-width * 2 + $graph-separator-width; + display: flex; + justify-content: center; + } + .bar { position: absolute; height: 4px; @@ -57,7 +66,7 @@ .graph-separator { position: relative; - width: 1px; + width: $graph-separator-width; height: 18px; margin: 5px 0 0; float: left; diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb index a6bfb913900..32b7f3207ef 100644 --- a/app/controllers/projects/branches_controller.rb +++ b/app/controllers/projects/branches_controller.rb @@ -29,7 +29,8 @@ class Projects::BranchesController < Projects::ApplicationController Gitlab::GitalyClient.allow_n_plus_1_calls do @max_commits = @branches.reduce(0) do |memo, branch| diverging_commit_counts = repository.diverging_commit_counts(branch) - [memo, diverging_commit_counts[:behind], diverging_commit_counts[:ahead]].max + [memo, diverging_commit_counts.values_at(:behind, :ahead, :distance)] + .flatten.compact.max end end diff --git a/app/views/projects/branches/_branch.html.haml b/app/views/projects/branches/_branch.html.haml index 4b0ea15335e..c64ad1c8147 100644 --- a/app/views/projects/branches/_branch.html.haml +++ b/app/views/projects/branches/_branch.html.haml @@ -2,6 +2,7 @@ - commit = @repository.commit(branch.dereferenced_target) - bar_graph_width_factor = @max_commits > 0 ? 100.0/@max_commits : 0 - diverging_commit_counts = @repository.diverging_commit_counts(branch) +- number_commits_distance = diverging_commit_counts[:distance] - number_commits_behind = diverging_commit_counts[:behind] - number_commits_ahead = diverging_commit_counts[:ahead] - merge_project = merge_request_source_project_for_project(@project) @@ -28,16 +29,23 @@ = s_('Branches|Cant find HEAD commit for this branch') - if branch.name != @repository.root_ref - .divergence-graph.d-none.d-md-block{ title: s_('%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead') % { number_commits_behind: diverging_count_label(number_commits_behind), - default_branch: @repository.root_ref, - number_commits_ahead: diverging_count_label(number_commits_ahead) } } - .graph-side - .bar.bar-behind{ style: "width: #{number_commits_behind * bar_graph_width_factor}%" } - %span.count.count-behind= diverging_count_label(number_commits_behind) - .graph-separator - .graph-side - .bar.bar-ahead{ style: "width: #{number_commits_ahead * bar_graph_width_factor}%" } - %span.count.count-ahead= diverging_count_label(number_commits_ahead) + - if number_commits_distance.nil? + .divergence-graph.d-none.d-md-block{ title: s_('%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead') % { number_commits_behind: diverging_count_label(number_commits_behind), + default_branch: @repository.root_ref, + number_commits_ahead: diverging_count_label(number_commits_ahead) } } + .graph-side + .bar.bar-behind{ style: "width: #{number_commits_behind * bar_graph_width_factor}%" } + %span.count.count-behind= diverging_count_label(number_commits_behind) + .graph-separator + .graph-side + .bar.bar-ahead{ style: "width: #{number_commits_ahead * bar_graph_width_factor}%" } + %span.count.count-ahead= diverging_count_label(number_commits_ahead) + - else + .divergence-graph.d-none.d-md-block{ title: s_('More than %{number_commits_distance} commits different with %{default_branch}') % { number_commits_distance: diverging_count_label(number_commits_distance), + default_branch: @repository.root_ref} } + .graph-side.full + .bar{ style: "width: #{number_commits_distance * bar_graph_width_factor}%" } + %span.count= diverging_count_label(number_commits_distance) .controls.d-none.d-md-block< - if merge_project && create_mr_button?(@repository.root_ref, branch.name) diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 9ec590f90d8..77fdfd3d40b 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -4630,6 +4630,9 @@ msgstr "" msgid "More information is available|here" msgstr "" +msgid "More than %{number_commits_distance} commits different with %{default_branch}" +msgstr "" + msgid "Most stars" msgstr "" diff --git a/spec/features/projects/branches/user_views_branches_spec.rb b/spec/features/projects/branches/user_views_branches_spec.rb index 62ae793151c..777d30fdffd 100644 --- a/spec/features/projects/branches/user_views_branches_spec.rb +++ b/spec/features/projects/branches/user_views_branches_spec.rb @@ -15,6 +15,8 @@ describe "User views branches" do it "shows branches" do expect(page).to have_content("Branches").and have_content("master") + + expect(page.all(".graph-side")).to all( have_content(/\d+/) ) end end diff --git a/spec/lib/gitlab/git/repository_spec.rb b/spec/lib/gitlab/git/repository_spec.rb index aef4e433439..8a9e78ba3c3 100644 --- a/spec/lib/gitlab/git/repository_spec.rb +++ b/spec/lib/gitlab/git/repository_spec.rb @@ -302,6 +302,7 @@ describe Gitlab::Git::Repository, :seed_helper do before do repository.create_branch('left-branch', 'master') repository.create_branch('right-branch', 'master') + left.times do new_commit_edit_new_file_on_branch(repository_rugged, 'encoding/CHANGELOG', 'left-branch', 'some more content for a', 'some stuff') end @@ -319,10 +320,10 @@ describe Gitlab::Git::Repository, :seed_helper do it 'returns the correct count bounding at max_count' do branch_a_sha = repository_rugged.branches['left-branch'].target.oid branch_b_sha = repository_rugged.branches['right-branch'].target.oid - expect( - repository.diverging_commit_count( - branch_a_sha, branch_b_sha, max_count: 1000) - ).to eq(expected) + + count = repository.diverging_commit_count(branch_a_sha, branch_b_sha, max_count: 1000) + + expect(count).to eq(expected) end end end @@ -341,6 +342,7 @@ describe Gitlab::Git::Repository, :seed_helper do before do repository.create_branch('left-branch', 'master') repository.create_branch('right-branch', 'master') + left.times do new_commit_edit_new_file_on_branch(repository_rugged, 'encoding/CHANGELOG', 'left-branch', 'some more content for a', 'some stuff') end @@ -358,7 +360,9 @@ describe Gitlab::Git::Repository, :seed_helper do it 'returns the correct count bounding at max_count' do branch_a_sha = repository_rugged.branches['left-branch'].target.oid branch_b_sha = repository_rugged.branches['right-branch'].target.oid + results = repository.diverging_commit_count(branch_a_sha, branch_b_sha, max_count: max_count) + expect(results[0] + results[1]).to eq(max_count) end end |