mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-20 10:06:04 +10:00
Fix post-receive errors on a push when an external issue tracker is configured
Closes #1700 Closes #1720
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
Please view this file on the master branch, on stable branches it's out of date.
|
||||
|
||||
v 7.12.0 (unreleased)
|
||||
- Fix post-receive errors on a push when an external issue tracker is configured (Stan Hu)
|
||||
- Update oauth button logos for Twitter and Google to recommended assets
|
||||
- Update browser gem to version 0.8.0 for IE11 support (Stan Hu)
|
||||
- Fix timeout when rendering file with thousands of lines.
|
||||
|
||||
@@ -88,18 +88,24 @@ class GitPushService
|
||||
end
|
||||
end
|
||||
|
||||
# Create cross-reference notes for any other references. Omit any issues that were referenced in an
|
||||
# issue-closing phrase, or have already been mentioned from this commit (probably from this commit
|
||||
# being pushed to a different branch).
|
||||
refs = commit.references(project, user) - issues_to_close
|
||||
refs.reject! { |r| commit.has_mentioned?(r) }
|
||||
if project.default_issues_tracker?
|
||||
create_cross_reference_notes(commit, issues_to_close)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if refs.present?
|
||||
author ||= commit_user(commit)
|
||||
def create_cross_reference_notes(commit, issues_to_close)
|
||||
# Create cross-reference notes for any other references. Omit any issues that were referenced in an
|
||||
# issue-closing phrase, or have already been mentioned from this commit (probably from this commit
|
||||
# being pushed to a different branch).
|
||||
refs = commit.references(project, user) - issues_to_close
|
||||
refs.reject! { |r| commit.has_mentioned?(r) }
|
||||
|
||||
refs.each do |r|
|
||||
Note.create_cross_reference_note(r, commit, author)
|
||||
end
|
||||
if refs.present?
|
||||
author ||= commit_user(commit)
|
||||
|
||||
refs.each do |r|
|
||||
Note.create_cross_reference_note(r, commit, author)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
module Issues
|
||||
class CloseService < Issues::BaseService
|
||||
def execute(issue, commit = nil)
|
||||
if issue.close
|
||||
if project.default_issues_tracker? && issue.close
|
||||
event_service.close_issue(issue, current_user)
|
||||
create_note(issue, commit)
|
||||
notification_service.close_issue(issue, current_user)
|
||||
|
||||
@@ -233,6 +233,15 @@ describe GitPushService do
|
||||
|
||||
expect(Issue.find(issue.id)).to be_opened
|
||||
end
|
||||
|
||||
it "doesn't close issues when external issue tracker is in use" do
|
||||
allow(project).to receive(:default_issues_tracker?).and_return(false)
|
||||
|
||||
# The push still shouldn't create cross-reference notes.
|
||||
expect {
|
||||
service.execute(project, user, @oldrev, @newrev, 'refs/heads/hurf')
|
||||
}.not_to change { Note.where(project_id: project.id, system: true).count }
|
||||
end
|
||||
end
|
||||
|
||||
describe "empty project" do
|
||||
|
||||
@@ -31,5 +31,15 @@ describe Issues::CloseService do
|
||||
expect(note.note).to include "Status changed to closed"
|
||||
end
|
||||
end
|
||||
|
||||
context "external issue tracker" do
|
||||
before do
|
||||
allow(project).to receive(:default_issues_tracker?).and_return(false)
|
||||
@issue = Issues::CloseService.new(project, user, {}).execute(issue)
|
||||
end
|
||||
|
||||
it { expect(@issue).to be_valid }
|
||||
it { expect(@issue).to be_opened }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user