FEATURE: Prefer `origin/main` over `origin/master` if it exists (#89)
This allows us to rename the main branch for plugin repos to `origin/main` and docker_manager should continue to work.
This commit is contained in:
parent
fce3e9239f
commit
a27337faf2
|
|
@ -112,12 +112,29 @@ class DockerManager::GitRepo
|
|||
Time.at(unix_timestamp).to_datetime
|
||||
end
|
||||
|
||||
def upstream_branch
|
||||
run("for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)")
|
||||
end
|
||||
|
||||
def has_origin_main?
|
||||
run("branch -r").include?("origin/main") rescue false
|
||||
end
|
||||
|
||||
def tracking_branch
|
||||
branch = nil
|
||||
if defined?(Discourse.find_compatible_git_resource)
|
||||
branch = Discourse.find_compatible_git_resource(path)
|
||||
end
|
||||
branch || run("for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)")
|
||||
return branch if branch.present?
|
||||
|
||||
head = upstream_branch
|
||||
|
||||
# We prefer `origin/main` to `origin/master`
|
||||
if head == "origin/master"
|
||||
return "origin/main" if has_origin_main?
|
||||
end
|
||||
|
||||
head
|
||||
end
|
||||
|
||||
def run(cmd)
|
||||
|
|
|
|||
|
|
@ -22,4 +22,28 @@ RSpec.describe DockerManager::GitRepo do
|
|||
end
|
||||
end
|
||||
|
||||
describe "#branch" do
|
||||
|
||||
it "returns origin/master if a repo hasn't been renamed" do
|
||||
described_class.any_instance.stubs(:upstream_branch).returns("origin/master")
|
||||
described_class.any_instance.stubs(:has_origin_main?).returns(false)
|
||||
repo = described_class.new("dummy", "dummy")
|
||||
expect(repo.branch).to eq("origin/master")
|
||||
end
|
||||
|
||||
it "returns origin/main if a repo has been renamed but still tracks master" do
|
||||
described_class.any_instance.stubs(:upstream_branch).returns("origin/master")
|
||||
described_class.any_instance.stubs(:has_origin_main?).returns(true)
|
||||
repo = described_class.new("dummy", "dummy")
|
||||
expect(repo.branch).to eq("origin/main")
|
||||
end
|
||||
|
||||
it "returns origin/main if a repo points at origin/main" do
|
||||
described_class.any_instance.stubs(:upstream_branch).returns("origin/main")
|
||||
described_class.any_instance.stubs(:has_origin_main?).returns(true)
|
||||
repo = described_class.new("dummy", "dummy")
|
||||
expect(repo.branch).to eq("origin/main")
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue