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