Class: Danger::GitRepo

Inherits:
Object
  • Object
show all
Defined in:
lib/danger/scm_source/git_repo.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#diffObject

Returns the value of attribute diff.



7
8
9
# File 'lib/danger/scm_source/git_repo.rb', line 7

def diff
  @diff
end

#folderObject

Returns the value of attribute folder.



7
8
9
# File 'lib/danger/scm_source/git_repo.rb', line 7

def folder
  @folder
end

#logObject

Returns the value of attribute log.



7
8
9
# File 'lib/danger/scm_source/git_repo.rb', line 7

def log
  @log
end

Instance Method Details

#diff_for_folder(folder, from: "master", to: "HEAD") ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/danger/scm_source/git_repo.rb', line 9

def diff_for_folder(folder, from: "master", to: "HEAD")
  self.folder = folder
  repo = Git.open self.folder

  ensure_commitish_exists!(from)
  ensure_commitish_exists!(to)

  merge_base = find_merge_base(repo, from, to)

  self.diff = repo.diff(merge_base, to)
  self.log = repo.log.between(from, to)
end

#ensure_commitish_exists!(commitish) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/danger/scm_source/git_repo.rb', line 39

def ensure_commitish_exists!(commitish)
  git_shallow_fetch if commit_not_exists?(commitish)

  if commit_not_exists?(commitish)
    raise_if_we_cannot_find_the_commit(commitish)
  end
end

#exec(string) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/danger/scm_source/git_repo.rb', line 22

def exec(string)
  require "open3"
  Dir.chdir(self.folder || ".") do
    Open3.popen2(default_env, "git #{string}") do |_stdin, stdout, _wait_thr|
      stdout.read.rstrip
    end
  end
end

#head_commitObject



31
32
33
# File 'lib/danger/scm_source/git_repo.rb', line 31

def head_commit
  exec("rev-parse HEAD")
end

#originsObject



35
36
37
# File 'lib/danger/scm_source/git_repo.rb', line 35

def origins
  exec("remote show origin -n").lines.grep(/Fetch URL/)[0].split(": ", 2)[1].chomp
end