2015-10-19 40 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更具體,例如如果您有其他本地文件更改。