From e025c32fde789d069b133bc98663c07b78320f2b Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Tue, 10 Jun 2014 17:16:05 -0400 Subject: [PATCH] Use the tests-passed branch when upgrading Discourse for stability. --- app/controllers/docker_manager/admin_controller.rb | 2 +- lib/docker_manager/git_repo.rb | 10 ++++++++-- lib/docker_manager/upgrader.rb | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/controllers/docker_manager/admin_controller.rb b/app/controllers/docker_manager/admin_controller.rb index c5084fd..8aab065 100644 --- a/app/controllers/docker_manager/admin_controller.rb +++ b/app/controllers/docker_manager/admin_controller.rb @@ -15,7 +15,7 @@ module DockerManager repos << DockerManager::GitRepo.new(File.dirname(p.path), p.name) end repos.map! do |r| - result = {name: r.name, path: r.path } + result = {name: r.name, path: r.path, branch: r.branch } if r.valid? result[:id] = r.name.downcase.gsub(/[^a-z]/, '_').gsub(/_+/, '_').sub(/_$/, '') result[:version] = r.latest_local_commit diff --git a/lib/docker_manager/git_repo.rb b/lib/docker_manager/git_repo.rb index 651c17d..e9a083a 100644 --- a/lib/docker_manager/git_repo.rb +++ b/lib/docker_manager/git_repo.rb @@ -1,11 +1,14 @@ # like Grit just very very minimal class DockerManager::GitRepo - attr_reader :path, :name + attr_reader :path, :name, :branch def initialize(path, name=nil) @path = path @name = name @memoize = {} + + # For discourse proper, defauilt to the `tests-passed` branch + @branch = (path == Rails.root.to_s) ? 'tests-passed' : 'master' end def start_upgrading @@ -74,7 +77,10 @@ class DockerManager::GitRepo end def tracking_branch - run "for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)" + return @tracking_branch if @tracking_branch + @tracking_branch = run("for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)") + @tracking_branch.gsub!('master', branch) + @tracking_branch end def run(cmd) diff --git a/lib/docker_manager/upgrader.rb b/lib/docker_manager/upgrader.rb index 1939ae7..606ae11 100644 --- a/lib/docker_manager/upgrader.rb +++ b/lib/docker_manager/upgrader.rb @@ -20,7 +20,7 @@ class DockerManager::Upgrader # HEAD@{upstream} is just a fancy way how to say origin/master (in normal case) # see http://stackoverflow.com/a/12699604/84283 - run("cd #{@repo.path} && git fetch && git reset --hard HEAD@{upstream}") + run("cd #{@repo.path} && git fetch && git checkout #{@repo.branch} && git reset --hard HEAD@{upstream}") log("********************************************************") log("*** Please be patient, next steps might take a while ***") log("********************************************************")