Module: Docman::GitUtil

Defined in:
lib/docman/git_util.rb

Class Method Summary collapse

Class Method Details

.commit(root_path, path, message) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/docman/git_util.rb', line 52

def self.commit(root_path, path, message)
  if repo_changed? path
    # puts message
    pull root_path
    exec %Q(git add --all #{path.slice "#{root_path}/"})
    exec %Q(git commit -m "#{message}")
  end
end

.exec(command) ⇒ Object



9
10
11
12
13
14
15
# File 'lib/docman/git_util.rb', line 9

def self.exec(command)
  @logger.info command
  result = `#{command}`.delete!("\n")
  @logger.info result if result
  raise result unless $?.exitstatus == 0
  result
end

.get(repo, path, type, version) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/docman/git_util.rb', line 23

def self.get(repo, path, type, version)
  if File.directory? path and File.directory?(File.join(path, '.git'))
    Dir.chdir path

    self.reset_repo(path) if self.repo_changed?(path)

    if type == 'branch'
      exec "git checkout #{version}"
      exec "git pull origin #{version}"
    end
    if type == 'tag'
      exec 'git fetch --tags'
      exec "git checkout tags/#{version}"
    end
  else
    FileUtils.rm_rf path if File.directory? path
    exec "git clone #{repo} #{path}"
    Dir.chdir path
    exec "git checkout #{version}"
  end
  result = `git rev-parse --short HEAD`
  @logger.info "Commit hash: #{result}"
  result.delete!("\n")
end

.last_commit_hash(path, branch) ⇒ Object



74
75
76
77
78
# File 'lib/docman/git_util.rb', line 74

def self.last_commit_hash(path, branch)
  Dir.chdir path
  result = `git rev-parse --short origin/#{branch}`
  result.delete!("\n")
end

.pull(path) ⇒ Object



61
62
63
64
# File 'lib/docman/git_util.rb', line 61

def self.pull(path)
  Dir.chdir path
  exec 'git pull'
end

.push(root_path, version) ⇒ Object



80
81
82
83
84
# File 'lib/docman/git_util.rb', line 80

def self.push(root_path, version)
  Dir.chdir root_path
  `git pull origin #{version}`
  `git push origin #{version}`
end

.repo?(path) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/docman/git_util.rb', line 66

def self.repo?(path)
  File.directory? File.join(path, '.git')
end

.repo_changed?(path) ⇒ Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/docman/git_util.rb', line 70

def self.repo_changed?(path)
  not Exec.do "#{Application::bin}/dm_repo_clean.sh #{path}"
end

.reset_repo(path) ⇒ Object



17
18
19
20
21
# File 'lib/docman/git_util.rb', line 17

def self.reset_repo(path)
  Dir.chdir path
  exec 'git reset --hard'
  exec 'git clean -f -d'
end

.update(path) ⇒ Object



48
49
50
# File 'lib/docman/git_util.rb', line 48

def self.update(path)
  pull path
end