Module: Dply::Git

Extended by:
Helper
Defined in:
lib/dply/git.rb

Class Method Summary collapse

Methods included from Helper

cmd, error, git, logger, stringify_values!, symlink

Class Method Details

.checkout(branch) ⇒ Object



17
18
19
20
# File 'lib/dply/git.rb', line 17

def self.checkout(branch)
  current_branch = `git rev-parse --abbrev-ref HEAD `.chomp.to_sym
  cmd "git checkout #{branch}" if branch != current_branch
end

.cleanObject



31
32
33
34
# File 'lib/dply/git.rb', line 31

def self.clean
  cmd "git reset --hard HEAD"
  cmd "git clean -dxf "
end

.clone(repo, dir, mirror: nil) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/dply/git.rb', line 22

def self.clone(repo, dir, mirror: nil)
  if mirror
    cmd "git clone #{mirror} #{dir}"
    Dir.chdir(dir) { cmd "git remote set-url origin #{repo}" }
  else
    cmd "git clone #{repo} #{dir}"
  end
end

.commit_idObject



52
53
54
55
56
# File 'lib/dply/git.rb', line 52

def self.commit_id
  commit_id = cmd "git rev-parse HEAD", return_output: true, display: false
  logger.debug commit_id.chomp
  commit_id.chomp
end

.get_remote_urlObject



46
47
48
49
50
# File 'lib/dply/git.rb', line 46

def self.get_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

.get_tracking_branch(branch) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/dply/git.rb', line 36

def self.get_tracking_branch(branch)
  command = "git for-each-ref --format='%(upstream:short)' refs/heads/#{branch} --count=1"
  tracking_branch = `#{command}`
  if tracking_branch =~ /[a-zA-Z0-9_]/
    return tracking_branch.chomp!
  else
    return nil
  end  
end

.pull(branch) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/dply/git.rb', line 7

def self.pull(branch)
  cmd "git fetch"
  checkout(branch)
  if tracking_branch = get_tracking_branch(branch)
    cmd "git merge #{tracking_branch}"
  else
    cmd "git pull origin #{branch}"
  end
end