From ab5e8dc8800886ca206ee9e6ffe80026b319063c Mon Sep 17 00:00:00 2001 From: Jason Rutherford Date: Thu, 11 Oct 2018 14:25:30 +0000 Subject: [PATCH] Feature improved branch filter sorting --- app/finders/branches_finder.rb | 41 +++++++++++++++--- ...feature-improved-branch-filter-sorting.yml | 6 +++ .../merge_requests/cherry_pick_changes.md | 8 ++-- .../branches/img/branch_filter_search_box.png | Bin 0 -> 83225 bytes doc/user/project/repository/branches/index.md | 18 ++++++++ doc/user/project/repository/index.md | 5 ++- spec/finders/branches_finder_spec.rb | 33 +++++++++++++- 7 files changed, 99 insertions(+), 12 deletions(-) create mode 100644 changelogs/unreleased/feature-improved-branch-filter-sorting.yml create mode 100644 doc/user/project/repository/branches/img/branch_filter_search_box.png diff --git a/app/finders/branches_finder.rb b/app/finders/branches_finder.rb index 970efa79dfb..45d5591e81b 100644 --- a/app/finders/branches_finder.rb +++ b/app/finders/branches_finder.rb @@ -7,8 +7,9 @@ class BranchesFinder end def execute - branches = @repository.branches_sorted_by(sort) - filter_by_name(branches) + branches = repository.branches_sorted_by(sort) + branches = by_search(branches) + branches end private @@ -23,11 +24,39 @@ class BranchesFinder @params[:sort].presence || 'name' end - def filter_by_name(branches) - if search - branches.select { |branch| branch.name.upcase.include?(search.upcase) } + def by_search(branches) + return branches unless search + + case search + when ->(v) { v.starts_with?('^') } + filter_branches_with_prefix(branches, search.slice(1..-1).upcase) + when ->(v) { v.ends_with?('$') } + filter_branches_with_suffix(branches, search.chop.upcase) else - branches + matches = filter_branches_by_name(branches, search.upcase) + set_exact_match_as_first_result(matches, search) end end + + def filter_branches_with_prefix(branches, prefix) + branches.select { |branch| branch.name.upcase.starts_with?(prefix) } + end + + def filter_branches_with_suffix(branches, suffix) + branches.select { |branch| branch.name.upcase.ends_with?(suffix) } + end + + def filter_branches_by_name(branches, term) + branches.select { |branch| branch.name.upcase.include?(term) } + end + + def set_exact_match_as_first_result(matches, term) + exact_match_index = find_exact_match_index(matches, term) + matches.insert(0, matches.delete_at(exact_match_index)) if exact_match_index + matches + end + + def find_exact_match_index(matches, term) + matches.index { |branch| branch.name.casecmp(term) == 0 } + end end diff --git a/changelogs/unreleased/feature-improved-branch-filter-sorting.yml b/changelogs/unreleased/feature-improved-branch-filter-sorting.yml new file mode 100644 index 00000000000..539c297e0dd --- /dev/null +++ b/changelogs/unreleased/feature-improved-branch-filter-sorting.yml @@ -0,0 +1,6 @@ +--- +title: Improving branch filter sorting by listing exact matches first and added support + for begins_with (^) and ends_with ($) matching. +merge_request: 22166 +author: Jason Rutherford +type: changed diff --git a/doc/user/project/merge_requests/cherry_pick_changes.md b/doc/user/project/merge_requests/cherry_pick_changes.md index 22ef11e4049..06b3779668b 100644 --- a/doc/user/project/merge_requests/cherry_pick_changes.md +++ b/doc/user/project/merge_requests/cherry_pick_changes.md @@ -12,9 +12,11 @@ to cherry-pick the changes introduced by that merge request. ![Cherry-pick Merge Request](img/cherry_pick_changes_mr.png) -After you click that button, a modal will appear where you can choose to -cherry-pick the changes directly into the selected branch or you can opt to -create a new merge request with the cherry-pick changes +After you click that button, a modal will appear showing a [branch filter search box](../repository/branches/index.md#branch-filter-search-box) +where you can choose to either: + +- Cherry-pick the changes directly into the selected branch. +- Create a new merge request with the cherry-picked changes. ## Cherry-picking a Commit diff --git a/doc/user/project/repository/branches/img/branch_filter_search_box.png b/doc/user/project/repository/branches/img/branch_filter_search_box.png new file mode 100644 index 0000000000000000000000000000000000000000..c4364ef39f41329d16bc3c1d0a548a771dd4feef GIT binary patch literal 83225 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 [Introduced][https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/22166] in GitLab 11.5. + +![Branch filter search box](img/branch_filter_search_box.png) + +This feature allows you to search and select branches quickly. Search results appear in the following order: + +- Branches with names that matched search terms exactly. +- Other branches with names that include search terms, sorted alphabetically. + +Sometimes when you have hundreds of branches you may want a more flexible matching pattern. In such cases you can use the following: + +- `^feature` will only match branch names that begin with 'feature'. +- `feature$` will only match branch names that end with 'feature'. + [ce-6449]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6449 "Add button to delete all merged branches" [protected]: ../../protected_branches.md diff --git a/doc/user/project/repository/index.md b/doc/user/project/repository/index.md index 4d016277824..ce79bfc0a03 100644 --- a/doc/user/project/repository/index.md +++ b/doc/user/project/repository/index.md @@ -85,12 +85,13 @@ You can live preview changes submitted to a new branch with With [GitLab Starter](https://about.gitlab.com/pricing/), you can also request [approval](https://docs.gitlab.com/ee/user/project/merge_requests/merge_request_approvals.html) from your managers. -To create, delete, and [branches](branches/index.md) via GitLab's UI: +To create, delete, and view [branches](branches/index.md) via GitLab's UI: - [Default branches](branches/index.md#default-branch) - [Create a branch](web_editor.md#create-a-new-branch) - [Protected branches](../protected_branches.md#protected-branches) - [Delete merged branches](branches/index.md#delete-merged-branches) +- [Branch filter search box](branches/index.md#branch-filter-search-box) Alternatively, you can use the [command line](../../../gitlab-basics/start-using-git.md#create-a-branch). @@ -169,7 +170,7 @@ vendored code, and most markup languages are excluded. ## Compare -Select branches to compare and view the changes inline: +Select branches to compare using the [branch filter search box](branches/index.md#branch-filter-search-box), then click the **Compare** button to view the changes inline: ![compare branches](img/compare_branches.png) diff --git a/spec/finders/branches_finder_spec.rb b/spec/finders/branches_finder_spec.rb index 9e3f2c69606..7d164539d9a 100644 --- a/spec/finders/branches_finder_spec.rb +++ b/spec/finders/branches_finder_spec.rb @@ -66,7 +66,7 @@ describe BranchesFinder do context 'filter and sort' do it 'filters branches by name and sorts by recently_updated' do - params = { sort: 'updated_desc', search: 'feature' } + params = { sort: 'updated_desc', search: 'feat' } branches_finder = described_class.new(repository, params) result = branches_finder.execute @@ -75,6 +75,17 @@ describe BranchesFinder do expect(result.count).to eq(2) end + it 'filters branches by name and sorts by recently_updated, with exact matches first' do + params = { sort: 'updated_desc', search: 'feature' } + branches_finder = described_class.new(repository, params) + + result = branches_finder.execute + + expect(result.first.name).to eq('feature') + expect(result.second.name).to eq('feature_conflict') + expect(result.count).to eq(2) + end + it 'filters branches by name and sorts by last_updated' do params = { sort: 'updated_asc', search: 'feature' } branches_finder = described_class.new(repository, params) @@ -84,6 +95,26 @@ describe BranchesFinder do expect(result.first.name).to eq('feature') expect(result.count).to eq(2) end + + it 'filters branches by name that begins with' do + params = { search: '^feature_' } + branches_finder = described_class.new(repository, params) + + result = branches_finder.execute + + expect(result.first.name).to eq('feature_conflict') + expect(result.count).to eq(1) + end + + it 'filters branches by name that ends with' do + params = { search: 'feature$' } + branches_finder = described_class.new(repository, params) + + result = branches_finder.execute + + expect(result.first.name).to eq('feature') + expect(result.count).to eq(1) + end end end end