2015-10-19 100 views
0

我对Ruby非常陌生,几乎从未使用过它。 但是我正在尝试使用Ruby编写一个服务器shakeout脚本。这几乎是我唯一的选择。Ruby做一个git diff

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

String localFile = "file.txt" 
String remoteRepo = "[email protected]: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运行Apache的Web服务器,并且Puppet重新加载Apache配置。

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

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

回答

0

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

在这种情况下,ruby-git gem似乎提供了一些您需要的diff功能。我会看看status这块宝石的起点。

0

我会忘记的单个文件,并试图只能做一个操作,只是使用git正常:

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

现在你可以比较(假设您的远程设备称为原点)

git diff origin # can be done offline 

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

git fetch 
git diff origin 

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