2015-10-19 3 views
0

Я очень новичок в Ruby и почти никогда не писал его. Тем не менее, я пытаюсь написать сценарий взлома сервера с помощью Ruby. Это почти единственный доступный мне вариант.Ruby do a 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?

Обратите внимание: файл.txt является примером. То, что я действительно хочу проверить, - это файл httpd.conf на моей установке apache. Этот файл хранится на нашем центральном сервере git для управления версиями, и любые изменения внесены в этот файл. Затем этот файл развертывается на веб-сервере под управлением apache через Puppet, а Puppet перезагружает конфигурацию apache.

Что я хочу сделать, так это убедиться, что версия httpd.conf на веб-сервере такая же, как и на сервере git.

Мое ограничение, я могу использовать Ruby только для проверки.

ответ

0

Одиночная вещь о Ruby заключается в том, что если есть общая проблема, то, вероятно, есть already a gem built addressing it.

В этом случае драгоценный камень ruby-git, как представляется, предоставляет некоторые функции разлочки, которые вы хотели бы. Я проверил бы status кусок драгоценного камня для отправной точки.

0

Я бы забыть один файл и пытаюсь сделать только одну операцию и просто использовать мерзавец, как обычно:

  1. клона репозитория
  2. сделать ваши изменения локально

Теперь вы можете сравнить локальный файл с любым из следующих (если ваш пульт называется источником)

git diff origin # can be done offline 

или сравнить с последней удаленной версии:

git fetch 
git diff origin 

вы можете git diff origin file.txt, чтобы быть более конкретным, например, если у вас есть другие локальные изменения файла.