Git + GitHub + Heroku - PullRequest
       8

Git + GitHub + Heroku

7 голосов
/ 30 марта 2010

Я новичок в мире Git, GitHub и Heroku. До сих пор я наслаждаюсь этой парадигмой, но, исходя из опыта работы с SVN, мне кажется, что в мире Git все немного сложнее. Я столкнулся с проблемой, для которой ищу решение.

Сценарий:

1. Я настроил новый частный проект на GitHub. Я раздвоил частный проект, и теперь у меня есть следующая структура в моей ветке:

    /project
      /apps
        /my-apps
          /my-app-1
            ....
          /my-app-2
            ....
          /your-apps
            /your-app-1
              ....
            /your-app-2
              ....
      /plugins
         ....

Я могу зафиксировать код в моей Fork на GitHub со своего компьютера в любой папке, которую я хочу. Позже они будут добавлены администратором проекта в главный репозиторий.

2. Для каждого отдельного приложения в папке приложений я настроил приложение на Heroku, которое само по себе является Git Repo, где я вносил свои изменения, когда закончил с пользовательскими историями с моего локального компьютера. Короче говоря, каждое приложение в папке приложений представляет собой приложение Rails, размещенное на Heroku.

Проблема:

Я хочу, чтобы, когда я помещал свои изменения в Heroku, они могли быть зафиксированы в моей ветке проекта на GitHub, так что он также всегда имеет самый последний код.

Проблема, которую я вижу, состоит в том, что код на Heroku - это Git Repo, а папки, которые у меня есть на GitHub, являются частью Repo.

До сих пор я исследовал, что в мире Git есть нечто, известное как субмодуль, который может прийти на помощь, однако я не смог найти некоторые инструкции для новичков.

Может ли кто-то в сообществе проявить любезность и поделиться своими мыслями и помочь мне определить решение этой проблемы?

1 Ответ

9 голосов
/ 30 марта 2010

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

Как использовать подмодули

Чтобы использовать подмодуль, сначала вы должны извлечь каталог и создать его как собственный репозиторий git с помощью git init. Затем вы можете загрузить это отдельно в Github или [место по вашему выбору] и использовать его в качестве подмодуля, используя команду: git submodule add [place/to/put/it] git://github.com/you/proj1.

Разделение лучше

Я бы подумал, что лучше оставить их отдельно в качестве своих собственных git-репозиториев и отправлять их по каждому герою. Причина? Более вероятно (я чувствую), что вы собираетесь работать по одному за раз и делать git commit и git push heroku master только для этого.

Однако, если вы хотите развернуть все приложения одновременно, вы можете восстановить дерево каталогов, используя скрипт Ruby, расположенный в каталоге верхнего уровня:

Dir["**/*"].select { |dir| File.directory?(dir) }.each do |f|
  Dir.chdir(dir) do
    `git push origin master`
    `git push heroku master`
  end
end

Конечно, это будет работать, только если вы внесете все свои изменения. Я не могу придумать способ автоматизировать это, поскольку у Ruby <= 1.9 нет модуля для чтения ваших мыслей. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...