Add Repository#discover_default_branch and add it to PushObserver
This commit is contained in:
parent
f06d98e907
commit
443e23e61a
2 changed files with 33 additions and 7 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
# Includes methods for handling Git Push events
|
||||||
|
#
|
||||||
|
# Triggered by PostReceive job
|
||||||
module PushObserver
|
module PushObserver
|
||||||
def observe_push(oldrev, newrev, ref, user)
|
def observe_push(oldrev, newrev, ref, user)
|
||||||
data = post_receive_data(oldrev, newrev, ref, user)
|
data = post_receive_data(oldrev, newrev, ref, user)
|
||||||
|
@ -84,11 +87,10 @@ module PushObserver
|
||||||
data
|
data
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# This method will be called after each post receive and only if the provided
|
||||||
# This method will be called after each post receive
|
# user is present in GitLab.
|
||||||
# and only if user present in gitlab.
|
|
||||||
# All callbacks for post receive should be placed here
|
|
||||||
#
|
#
|
||||||
|
# All callbacks for post receive should be placed here.
|
||||||
def trigger_post_receive(oldrev, newrev, ref, user)
|
def trigger_post_receive(oldrev, newrev, ref, user)
|
||||||
# Create push event
|
# Create push event
|
||||||
self.observe_push(oldrev, newrev, ref, user)
|
self.observe_push(oldrev, newrev, ref, user)
|
||||||
|
@ -101,5 +103,11 @@ module PushObserver
|
||||||
|
|
||||||
# Create satellite
|
# Create satellite
|
||||||
self.satellite.create unless self.satellite.exists?
|
self.satellite.create unless self.satellite.exists?
|
||||||
|
|
||||||
|
# Discover the default branch, but only if it hasn't already been set to
|
||||||
|
# something else
|
||||||
|
if default_branch.nil?
|
||||||
|
update_attributes(default_branch: discover_default_branch)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -94,6 +94,24 @@ module Repository
|
||||||
end.sort_by(&:name)
|
end.sort_by(&:name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Discovers the default branch based on the repository's available branches
|
||||||
|
#
|
||||||
|
# - If no branches are present, returns nil
|
||||||
|
# - If one branch is present, returns its name
|
||||||
|
# - If two or more branches are present, returns the one that has a name
|
||||||
|
# matching root_ref (default_branch or 'master' if default_branch is nil)
|
||||||
|
def discover_default_branch
|
||||||
|
branches = heads.collect(&:name)
|
||||||
|
|
||||||
|
if branches.length == 0
|
||||||
|
nil
|
||||||
|
elsif branches.length == 1
|
||||||
|
branches.first
|
||||||
|
else
|
||||||
|
branches.select { |v| v == root_ref }.first
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def has_commits?
|
def has_commits?
|
||||||
!!commit
|
!!commit
|
||||||
end
|
end
|
||||||
|
@ -102,7 +120,7 @@ module Repository
|
||||||
default_branch || "master"
|
default_branch || "master"
|
||||||
end
|
end
|
||||||
|
|
||||||
def root_ref? branch
|
def root_ref?(branch)
|
||||||
root_ref == branch
|
root_ref == branch
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -111,7 +129,7 @@ module Repository
|
||||||
# Already packed repo archives stored at
|
# Already packed repo archives stored at
|
||||||
# app_root/tmp/repositories/project_name/project_name-commit-id.tag.gz
|
# app_root/tmp/repositories/project_name/project_name-commit-id.tag.gz
|
||||||
#
|
#
|
||||||
def archive_repo ref
|
def archive_repo(ref)
|
||||||
ref = ref || self.root_ref
|
ref = ref || self.root_ref
|
||||||
commit = self.commit(ref)
|
commit = self.commit(ref)
|
||||||
return nil unless commit
|
return nil unless commit
|
||||||
|
@ -138,6 +156,6 @@ module Repository
|
||||||
end
|
end
|
||||||
|
|
||||||
def http_url_to_repo
|
def http_url_to_repo
|
||||||
http_url = [Gitlab.config.url, "/", path, ".git"].join()
|
http_url = [Gitlab.config.url, "/", path, ".git"].join('')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue