GIT и Ruby: Как мне отключить переменную GIT_DIR изнутри скрипта ruby?

Я написал очень простой сценарий развертывания, работающий как мой post- update в моем голом репозитории git.

Переменные следующие

live domain         = ~/mydomain.com
staging domain      = ~/stage.mydomain.com
git repo location   = ~/git.mydomain.com/thisrepo.git (bare)

core                = ~/git.mydomain.com/thisrepo.git
core                == added remote into each live & stage gits

оба live и этап инициализировали репозитории git (не голые), и я добавил свое голое репо в качестве удаленного к каждому из них. (с именем core ), чтобы git pull core stage или git pull core live извлекали обновленные файлы из соответствующей ветки основной репо.

Сценарий выглядит следующим образом:

#!/usr/bin/env ruby

# Loop over each passed in argument
ARGV.each do |branch|

  # If it matches the stage then 'update' the staging files
  if branch == "refs/heads/stage"

    puts ""
    puts "Looks like the staging branch was updated."
    puts "Running a tree checkout now…"
    puts ""
    `cd ~/stage.mydomain.com`
    `unset GIT_DIR` # <= breaks!
    `git pull core stage`
    puts ""
    puts "Tree pull completed on staging branch."
    puts ""

  # If it's a live site update, update those files
  elsif branch == "refs/heads/live"

    puts ""
    puts "Looks like the live branch was updated."
    puts "Running a tree checkout now…"
    puts ""
    `cd ~/mydomain.com`
    `unset GIT_DIR` # <= breaks!
    `git pull core live`
    puts ""
    puts "Tree checkout completed on live branch."
    puts ""

  end

end

Я попытался адаптировать «обновление» файлов из этого сценария bash здесь , который использует unset GIT_DIR для запуска следующей команды git git pull core stage например. core - это добавленный удаленный моего голого репо в другой папке на сервере.

Однако при выполнении приведенного выше сценария я получаю следующие ошибки:

remote: hooks/post-update:35: command not found: unset GIT_DIR        
remote: fatal: /usr/lib/git-core/git-pull cannot be used without a working tree.        

Есть ли способ сделать то же самое, что и unset GIT_DIR в сценарии bash в моем сценарии ruby?

Большое спасибо,

Яннис

5
задан Jannis 2 April 2011 в 23:14
поделиться