Git Подмодули с Heroku - PullRequest
       14

Git Подмодули с Heroku

9 голосов
/ 20 ноября 2011

Проблема

У меня есть приложение Rails 3.1 на Heroku, которому скоро потребуется куча (сторонних) подмодулей (некоторые из которых имеют подмодули).К сожалению, в Heroku отсутствует поддержка субмодулей.Одно из предложений на веб-сайте Heroku - переместить содержимое подмодулей в основной репозиторий ( здесь ).Это будет нормально работать в первый раз, но есть вероятность, что это не так во второй раз.Это может быть вызвано серьезным обновлением в одном из субмодулей сторонних производителей, где слияние ускоренной перемотки не удалосьОчевидно, что мы не можем вручную объединить сторонний проект.

«Решение»

Наше предварительное решение заключается в следующем:

  1. Создать новый 'temp'ветвь, основанная на последней стабильной ветке dev, и объединение субмодулей в проект.
  2. Извлечение в ветку 'heroku'.
  3. Создание ядра этой ветки heroku, чтобы избежать возможных конфликтов,т.е. создайте коммит со всем удаленным.
  4. Объедините временную ветку с веткой heroku.
  5. Переместите эту ветку heroku на наш сервер heroku.

Преимущества

Это позволит избежать любых возможных конфликтов в подмодулях сторонних разработчиков и может быть использовано в сценариях.

Отключения

Это крайне неэлегично и является абсолютным анти-паттерном для SVC.

Вопрос

Есть ли лучший способ сделать это?

Ответы [ 4 ]

8 голосов
/ 07 января 2012

Heroku теперь поддерживает подмодули.

http://devcenter.heroku.com/articles/git-submodules

Однако эта функция не поддерживает частные подмодули.

2 голосов
/ 21 декабря 2016

Существует еще одна альтернатива подходу @Daniel Eisenhardt: https://stackoverflow.com/a/29464430/990356

Перейдите к Настройки> Персональные токены доступа и создайте персональный токен доступа с включенной областью действия repo.

Теперь вы можете сделать git clone https://MY_TOKEN@github.com/user-or-org/repo, а в случае подмодуля git submodule add https://MY_TOKEN@github.com/user-or-org/repo

Плюсы:

  • очень простой подход
  • токен может бытьлегко отменяется
  • ваш реальный пароль в безопасности

Минусы:

  • если у кого-то есть доступ к токену, он может получить доступ к вашим репозиториям GitHub (читать инаписать)
1 голос
/ 21 ноября 2011

Поскольку Heroku в настоящее время не поддерживает подмодули , еще одним возможным способом будет объединение поддеревьев.

По сути, слияние поддеревьев - это стратегия слияния Git, которая позволяет вам объединить другой репозиторий git с вашим, но в подкаталоге по вашему выбору. Существует инструмент под названием git-subtree, который пытается обернуть этот процесс аналогично git-submodule(1).

Кроме справочной страницы git-merge(1), есть несколько других статей, которые могут помочь вам в этой стратегии слияния:

0 голосов
/ 17 января 2013

Вы можете просто добавить общедоступные подмодули, и heroku получит их для вас при развертывании.

Heroku объясняет здесь , что вы можете добавить частные подмодули в свой репозиторий, но вам нужно включитьучетные данные, которые могут быть проблемой безопасности:

$ git submodule add https://username:password@github.com/myusername/FooBar

К сожалению, git сохраняет ваши имя пользователя и пароль в виде обычного текста, когда вы делаете это.

...