Sha256: 8a583ee1814b4986ac0432f156900ea8b1c399a69abd0277c7059514526f4c53

Contents?: true

Size: 1.71 KB

Versions: 3

Compression:

Stored size: 1.71 KB

Contents

require 'logger'

module Docman

  module GitUtil

    @logger = Logger.new(STDOUT)

    def self.exec(command)
      @logger.info command
      @logger.info `#{command}`.delete!("\n")
    end

    def self.get(repo, path, type, version)
      if File.directory? path and File.directory?(File.join(path, '.git'))
        Dir.chdir 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

    def self.update(path)
      pull path
    end

    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

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

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

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

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

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

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
docman-0.0.8 lib/docman/git_util.rb
docman-0.0.7 lib/docman/git_util.rb
docman-0.0.6 lib/docman/git_util.rb