aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/utils/git.rb
diff options
context:
space:
mode:
authorMarkus Reiter2017-05-22 02:23:33 +0200
committerGitHub2017-05-22 02:23:33 +0200
commit8f068a356dfe4769905d2487533b9e8124287098 (patch)
tree9097e725239a045c34e0e3aafb9ea67ee7e4d15d /Library/Homebrew/utils/git.rb
parent6d8c170e50b6ee232e4f8958c92735bf411a72e9 (diff)
parent473bdadbcd0f87fdeda98f73b25bb47a14221281 (diff)
downloadbrew-8f068a356dfe4769905d2487533b9e8124287098.tar.bz2
Merge pull request #2601 from reitermarkus/audit-version-checksum
Add audit check to see if both version and checksum changed.
Diffstat (limited to 'Library/Homebrew/utils/git.rb')
-rw-r--r--Library/Homebrew/utils/git.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/Library/Homebrew/utils/git.rb b/Library/Homebrew/utils/git.rb
index 1b4d24894..43d93b64e 100644
--- a/Library/Homebrew/utils/git.rb
+++ b/Library/Homebrew/utils/git.rb
@@ -1,3 +1,31 @@
+require "open3"
+
+module Git
+ module_function
+
+ def last_revision_commit_of_file(repo, file, before_commit: nil)
+ args = [before_commit.nil? ? "--skip=1" : before_commit.split("..").first]
+
+ out, = Open3.capture3(
+ HOMEBREW_SHIMS_PATH/"scm/git", "-C", repo,
+ "log", "--oneline", "--max-count=1", *args, "--", file
+ )
+ out.split(" ").first
+ end
+
+ def last_revision_of_file(repo, file, before_commit: nil)
+ relative_file = Pathname(file).relative_path_from(repo)
+
+ commit_hash = last_revision_commit_of_file(repo, file, before_commit: before_commit)
+
+ out, = Open3.capture3(
+ HOMEBREW_SHIMS_PATH/"scm/git", "-C", repo,
+ "show", "#{commit_hash}:#{relative_file}"
+ )
+ out
+ end
+end
+
module Utils
def self.git_available?
return @git if instance_variable_defined?(:@git)