From 3bd783b096597787ddd71f88e27412965d5f7b0a Mon Sep 17 00:00:00 2001 From: James Couball Date: Fri, 3 Mar 2023 11:48:02 -0800 Subject: [PATCH] Remote#branch and #merge should default to current branch instead of "master" Signed-off-by: James Couball --- lib/git/remote.rb | 28 +++++++++++---------- tests/units/test_remotes.rb | 49 +++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 13 deletions(-) diff --git a/lib/git/remote.rb b/lib/git/remote.rb index 73556a7c..9b2f3958 100644 --- a/lib/git/remote.rb +++ b/lib/git/remote.rb @@ -1,8 +1,8 @@ module Git class Remote < Path - + attr_accessor :name, :url, :fetch_opts - + def initialize(base, name) @base = base config = @base.lib.config_remote(name) @@ -10,27 +10,29 @@ def initialize(base, name) @url = config['url'] @fetch_opts = config['fetch'] end - + def fetch(opts={}) @base.fetch(@name, opts) end - + # merge this remote locally - def merge(branch = 'master') - @base.merge("#{@name}/#{branch}") + def merge(branch = @base.current_branch) + remote_tracking_branch = "#{@name}/#{branch}" + @base.merge(remote_tracking_branch) end - - def branch(branch = 'master') - Git::Branch.new(@base, "#{@name}/#{branch}") + + def branch(branch = @base.current_branch) + remote_tracking_branch = "#{@name}/#{branch}" + Git::Branch.new(@base, remote_tracking_branch) end - + def remove - @base.lib.remote_remove(@name) + @base.lib.remote_remove(@name) end - + def to_s @name end - + end end diff --git a/tests/units/test_remotes.rb b/tests/units/test_remotes.rb index ce0ed507..d119754e 100644 --- a/tests/units/test_remotes.rb +++ b/tests/units/test_remotes.rb @@ -232,4 +232,53 @@ def test_push assert(rem.tag('test-tag')) end end + + test 'Remote#branch with no args' do + in_temp_dir do + Dir.mkdir 'git' + Git.init('git', initial_branch: 'first', bare: true) + r1 = Git.clone('git', 'r1') + File.write('r1/file1.txt', 'hello world') + r1.add('file1.txt') + r1.commit('first commit') + r1.push + + r2 = Git.clone('git', 'r2') + + File.write('r1/file2.txt', 'hello world') + r1.add('file2.txt') + r1.commit('second commit') + r1.push + + branch = r2.remote('origin').branch + + assert_equal('origin/first', branch.full) + end + end + + test 'Remote#merge with no args' do + in_temp_dir do + Dir.mkdir 'git' + Git.init('git', initial_branch: 'first', bare: true) + r1 = Git.clone('git', 'r1') + File.write('r1/file1.txt', 'hello world') + r1.add('file1.txt') + r1.commit('first commit') + r1.push + + r2 = Git.clone('git', 'r2') + + File.write('r1/file2.txt', 'hello world') + r1.add('file2.txt') + r1.commit('second commit') + r1.push + + remote = r2.remote('origin') + + remote.fetch + remote.merge + + assert(File.exist?('r2/file2.txt')) + end + end end