Пытаюсь обновить подмодуль git с помощью Ruby, как выполнить chdir перед выполнением команды оболочки?

#ruby #git #rake #git-submodules

#ruby #git #грабли #git-подмодули

Вопрос:

У меня есть некоторое репозиторий git X, у которого есть подмодуль во вложенной папке foo/bar, указывающий на репозиторий Y.

Я пытаюсь заставить мою систему CI автоматически обновлять подмодуль, я имею в виду выполнение этих команд из RAKE:

 $ cd foo/bar
$ git pull origin master
  

Но когда моя задача RAKE пытается выполнить это, похоже, что она извлекает X вместо Y (из журнала), поэтому я предполагаю, что chdir в foo / bar не сработал.

Что я уже пробовал в ruby:

1. Использование обратных ссылок:

 `cd foo amp;amp; cd bar amp;amp; git pull origin master`
  

2. Сначала используйте Dir.chdir, а затем обратные ссылки:

 Dir.chdir(Dir.pwd   "\foo\bar")
`git pull origin master`
  

(Да, я использую обратную косую черту, потому что агент работает в Windows …)

Похоже, что оба вышеуказанных метода все еще выполняются в корне X вместо X foo bar.

Есть идеи? 🙁

Спасибо

Ответ №1:

Почему бы и нет: git submodule update

В противном случае: git --git-dir="foo\bar" pull origin master

Ответ №2:

Передать Dir.chdir блок

 Dir.chdir(Dir.pwd   "\foo\bar") do
    `git pull origin master`
end