Ruby 做一个 git 差异

Ruby do a git diff

我是 Ruby 的新手,几乎从未使用过它。 但是,我正在尝试使用 Ruby 编写服务器调整脚本。这几乎是我唯一可用的选择。

我想要做的是 git 远程存储库和本地文件上的文件的差异。如果它们相同 return true,否则 return false。

String localFile = "file.txt"
String remoteRepo = "git@github.com:achinthaguansekara/server_spec.git"

git diff between localFile and file on remoteRepo

if same
    return true
else
    return false

有没有办法使用 Ruby 来做到这一点?

请注意 file.txt 是示例。我真正想要检查的是我的 apache 安装中的 httpd.conf 文件。此文件存储在我们的中央 git 服务器上用于版本控制,并且对此文件进行了任何更改。然后,此文件通过 Puppet 部署到 Web 服务器 运行apache,Puppet 重新加载 apache 配置。

我想做的是确保 Web 服务器上的 httpd.conf 版本与 git 服务器上的版本相同。

我的限制是,我只能使用 Ruby 来做这个检查。

关于 Ruby 的一件很酷的事情是,如果有一个共同的问题,那么可能 already a gem built addressing it

在这种情况下,ruby-git gem 似乎提供了一些您想要的差异功能。我会查看 gem 的 status 部分作为起点。

我会忘记单个文件并尝试只执行一个操作并像往常一样使用 git:

  1. 克隆存储库
  2. 在本地进行更改

现在您可以将本地文件与以下任一文件进行比较(假设您的远程名为 origin)

git diff origin # can be done offline

或者,与最新的远程版本进行比较:

git fetch
git diff origin

您可以git diff origin file.txt更具体一些,例如如果您有其他本地文件更改。