Вы подумали в правильном направлении.
Для этой цели используйте
require 'git'
g = Git.open('path/to/dir')
g.diff('your.file').patch #=> changes in your.file
Например, у нас были пустые файлы git.rb
и smth
в нашем git-repo.
Затем мы изменили их и проверили разницу:
$ git diff
diff --git a/git.rb b/git.rb
index e69de29..3ff224d 100644
--- a/git.rb
+++ b/git.rb
@@ -0,0 +1,3 @@
+require 'git'
+g = Git.open(__dir__)
+puts g.diff('smth').patch
diff --git a/smth b/smth
index e69de29..7c5bd35 100644
--- a/smth
+++ b/smth
@@ -0,0 +1 @@
+we want to know changes
Как уже догадались по измененному git.rb
, теперь мы увидим изменения только в smth
:
$ ruby git.rb
diff --git a/smth b/smth
index e69de29..7c5bd35 100644
--- a/smth
+++ b/smth
@@ -0,0 +1 @@
+we want to know changes
В случае отсутствия изменений вы получите пустую строку ""
.