Commit 443e23e6 authored by Robert Speicher's avatar Robert Speicher

Add Repository#discover_default_branch and add it to PushObserver

parent f06d98e9
# 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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment