Sha256: 7e08ebf7c960ed12fbd8f6817e652b1e7520d31aa631fcb36b6ee6472d29a6e8
Contents?: true
Size: 1.59 KB
Versions: 3
Compression:
Stored size: 1.59 KB
Contents
# For more info see: https://github.com/schacon/ruby-git require 'grit' require 'uri' module Danger module CISource class LocalGitRepo < CI attr_accessor :base_commit, :head_commit def self.validates?(env) return !env["DANGER_USE_LOCAL_GIT"].nil? end def git @git ||= Grit::Git.new(".") end def run_git(command) binary = Grit::Git.git_binary git.sh "#{binary} #{command}" end def initialize(*) # get the remote URL remote = run_git "remote show origin -n | grep \"Fetch URL\" | cut -d ':' -f 2-" if remote url = remote[0].strip # deal with https:// if url.start_with? "https://github.com/" self.repo_slug = url.gsub("https://github.com/", "").gsub(".git", '') # deal with SSH origin elsif url.start_with? "git@github.com:" self.repo_slug = url.gsub("git@github.com:", "").gsub(".git", '') else puts "Danger local requires a repository hosted on github." end end # get the most recent PR merge logs = run_git "log --since='2 weeks ago' --merges --oneline | grep \"Merge pull request\" | head -n 1" pr_merge = logs[0].strip if pr_merge self.pull_request_id = pr_merge.match("#[0-9]*")[0].delete("#") sha = pr_merge.split(" ")[0] parents = run_git "rev-list --parents -n 1 #{sha}" self.base_commit = parents[0].strip.split(" ")[0] self.head_commit = parents[0].strip.split(" ")[1] end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
danger-0.5.2 | lib/danger/ci_source/local_git_repo.rb |
danger-0.5.1 | lib/danger/ci_source/local_git_repo.rb |
danger-0.5.0 | lib/danger/ci_source/local_git_repo.rb |