From a4e19b6cb09d6f128942811b02b89aa671776ba2 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Sat, 19 Mar 2016 18:54:18 +0000 Subject: [PATCH] Merge branch 'issue-branch-iid-postfix' into 'master' #to_branch_name now uses the iid as postfix Given the branch name 'mep-mep' with an iid being 1, the current way, master's way, would yield a branch name of 1-mep-mep. The problem for larger projects however would be that a developer might forget what iid the issue was. When this developer would try to tab complete it would: - Or result in 20+ branches possibly - Or start with the wrong digit, try again with digit++ - Would see 20 branches, repeat Thus the obvious way of solving this is letting the dev tab complete on the issue title, which is easier to remember. @DouweM Should this be labelled `pick-in-master`? See merge request !3308 --- app/models/issue.rb | 7 +++---- app/services/merge_requests/build_service.rb | 2 +- app/services/system_note_service.rb | 2 +- spec/models/issue_spec.rb | 6 +++--- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/app/models/issue.rb b/app/models/issue.rb index 053387cffd..5347d4fa1b 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -106,9 +106,8 @@ class Issue < ActiveRecord::Base def related_branches return [] if self.project.empty_repo? - self.project.repository.branch_names.select do |branch| - branch =~ /\A#{iid}-(?!\d+-stable)/i - end + + self.project.repository.branch_names.select { |branch| branch.end_with?("-#{iid}") } end # Reset issue events cache @@ -139,7 +138,7 @@ class Issue < ActiveRecord::Base end def to_branch_name - "#{iid}-#{title.parameterize}" + "#{title.parameterize}-#{iid}" end def can_be_worked_on?(current_user) diff --git a/app/services/merge_requests/build_service.rb b/app/services/merge_requests/build_service.rb index fa34753c4f..6e9152e444 100644 --- a/app/services/merge_requests/build_service.rb +++ b/app/services/merge_requests/build_service.rb @@ -51,7 +51,7 @@ module MergeRequests # be interpreted as the use wants to close that issue on this project # Pattern example: 112-fix-mep-mep # Will lead to appending `Closes #112` to the description - if match = merge_request.source_branch.match(/\A(\d+)-/) + if match = merge_request.source_branch.match(/-(\d+)\z/) iid = match[1] closes_issue = "Closes ##{iid}" diff --git a/app/services/system_note_service.rb b/app/services/system_note_service.rb index f09b77c4a5..2afcaad464 100644 --- a/app/services/system_note_service.rb +++ b/app/services/system_note_service.rb @@ -210,7 +210,7 @@ class SystemNoteService # Called when a branch is created from the 'new branch' button on a issue # Example note text: # - # "Started branch `201-issue-branch-button`" + # "Started branch `issue-branch-button-201`" def self.new_issue_branch(issue, project, author, branch) h = Gitlab::Application.routes.url_helpers link = h.namespace_project_compare_url(project.namespace, project, from: project.default_branch, to: branch) diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb index 2ccdec1eef..540a62eb1f 100644 --- a/spec/models/issue_spec.rb +++ b/spec/models/issue_spec.rb @@ -131,7 +131,7 @@ describe Issue, models: true do end describe '#related_branches' do - it "should " do + it "selects the right branches" do allow(subject.project.repository).to receive(:branch_names). and_return(["mpempe", "#{subject.iid}mepmep", subject.to_branch_name]) @@ -151,10 +151,10 @@ describe Issue, models: true do end describe "#to_branch_name" do - let(:issue) { build(:issue, title: 'a' * 30) } + let(:issue) { create(:issue, title: 'a' * 30) } it "starts with the issue iid" do - expect(issue.to_branch_name).to match /\A#{issue.iid}-a+\z/ + expect(issue.to_branch_name).to match /-#{issue.iid}\z/ end end end