Sha256: 362ccc544af305ab48ba15c3b5a659bfa18d63b5f41beb055c498fff8b209c76
Contents?: true
Size: 1.98 KB
Versions: 3
Compression:
Stored size: 1.98 KB
Contents
# For more info see: https://github.com/schacon/ruby-git require 'git' 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 ||= GitRepo.new end def run_git(command) git.exec command end def supported_request_sources @supported_request_sources ||= [Danger::RequestSources::GitHub] end def initialize(env = {}) github_host = env["DANGER_GITHUB_HOST"] || "github.com" # get the remote URL remote = run_git "remote show origin -n | grep \"Fetch URL\" | cut -d ':' -f 2-" if remote remote_url_matches = remote.match(%r{#{Regexp.escape github_host}(:|/)(?<repo_slug>.+/.+?)(?:\.git)?$}) if !remote_url_matches.nil? and remote_url_matches["repo_slug"] self.repo_slug = remote_url_matches["repo_slug"] else puts "Danger local requires a repository hosted on GitHub.com or GitHub Enterprise." end end specific_pr = env["LOCAL_GIT_PR_ID"] pr_ref = specific_pr ? "##{specific_pr}" : '' pr_command = "log --merges --oneline | grep \"Merge pull request #{pr_ref}\" | head -n 1" # get the most recent PR merge pr_merge = run_git pr_command.strip if pr_merge.to_s.empty? if specific_pr raise "Could not find the pull request (#{specific_pr}) inside the git history for this repo." else raise "No recent pull requests found for this repo, danger requires at least one PR for the local mode." end end self.pull_request_id = pr_merge.match("#([0-9]+)")[1] sha = pr_merge.split(" ")[0] parents = run_git("rev-list --parents -n 1 #{sha}").strip.split(" ") self.base_commit = parents[0] self.head_commit = parents[1] end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
danger-0.8.4 | lib/danger/ci_source/local_git_repo.rb |
danger-0.8.3 | lib/danger/ci_source/local_git_repo.rb |
danger-0.8.2 | lib/danger/ci_source/local_git_repo.rb |