lib/dply/git.rb in dply-0.2.19 vs lib/dply/git.rb in dply-0.3.0
- old
+ new
@@ -5,20 +5,27 @@
extend Helper
def self.pull(branch)
cmd "git fetch"
checkout(branch)
- if tracking_branch = get_tracking_branch(branch)
+ if tracking_branch = tracking_branch(branch)
cmd "git merge #{tracking_branch}"
else
cmd "git pull origin #{branch}"
end
end
-
+
def self.checkout(branch)
- current_branch = `git rev-parse --abbrev-ref HEAD `.chomp.to_sym
- cmd "git checkout #{branch}" if branch != current_branch
+ current_branch = `git rev-parse --abbrev-ref HEAD `.chomp
+ return if branch == current_branch
+
+ local_branch_exists = system "git", "show-ref", "-q", "--verify", "refs/heads/#{branch}"
+ if local_branch_exists
+ cmd "git checkout #{branch} --"
+ else
+ cmd "git checkout -b #{branch} -t origin/#{branch}"
+ end
end
def self.clone(repo, dir, mirror: nil)
if mirror
cmd "git clone #{mirror} #{dir}"
@@ -31,20 +38,20 @@
def self.clean
cmd "git reset --hard HEAD"
cmd "git clean -dxf "
end
- def self.get_tracking_branch(branch)
+ def self.tracking_branch(branch)
command = "git for-each-ref --format='%(upstream:short)' refs/heads/#{branch} --count=1"
- tracking_branch = `#{command}`
+ tracking_branch = cmd command, return_output: true, display: false
if tracking_branch =~ /[a-zA-Z0-9_]/
return tracking_branch.chomp!
else
return nil
- end
+ end
end
- def self.get_remote_url
+ def self.remote_url
remote_url = cmd "git config --get remote.origin.url", return_output: true, display: false
logger.debug remote_url.chomp
remote_url.chomp
end