Class: Danger::GitRepo
- Inherits:
-
Object
- Object
- Danger::GitRepo
- Defined in:
- lib/danger/scm_source/git_repo.rb
Instance Attribute Summary collapse
-
#diff ⇒ Object
Returns the value of attribute diff.
-
#folder ⇒ Object
Returns the value of attribute folder.
-
#log ⇒ Object
Returns the value of attribute log.
Instance Method Summary collapse
- #diff_for_folder(folder, from: "master", to: "HEAD") ⇒ Object
- #ensure_commitish_exists!(commitish) ⇒ Object
- #exec(string) ⇒ Object
- #head_commit ⇒ Object
- #origins ⇒ Object
Instance Attribute Details
#diff ⇒ Object
Returns the value of attribute diff.
7 8 9 |
# File 'lib/danger/scm_source/git_repo.rb', line 7 def diff @diff end |
#folder ⇒ Object
Returns the value of attribute folder.
7 8 9 |
# File 'lib/danger/scm_source/git_repo.rb', line 7 def folder @folder end |
#log ⇒ Object
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_commit ⇒ Object
31 32 33 |
# File 'lib/danger/scm_source/git_repo.rb', line 31 def head_commit exec("rev-parse HEAD") end |
#origins ⇒ Object
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 |