Как распространять Thrift-сгенерированный код в средах разработки и производства с помощью Git? - PullRequest
4 голосов
/ 20 ноября 2011

Как вы управляете сгенерированными файлами исходного кода в своих репозиториях и процедурах развертывания с помощью Git (PHP, Python и т. Д.)?

Например, у меня есть репозиторий с именем «interfaces» с определениями Thrift.Они могут быть преобразованы в Python, PHP, JS и т. Д. Скелеты / заглушки.Другие проекты на разных языках, каждый в своем репозитории, хотят использовать эти заглушки.Как доставить заглушки в проекты?

Я вижу только два способа:

  1. Сгенерировать заглушки и сохранить их в репозитории «interfaces» и в этом репозитории.должны быть прикреплены к проектам (как субмодуль только для чтения или любым другим способом).Но этот способ создает много головной боли при проверке обновлений интерфейсов и заглушек из-за слишком сложных концепций «git submodules».

  2. Присоединение чистого репозитория «интерфейсов» к каждому проекту,и генерировать заглушки как временные git-ignorable (!) файлы (с помощью «make stubs» или аналогичные).Таким образом, каждый проект может иметь свои собственные настройки генерации с примененными патчами (при необходимости).Но вам нужно ввести некоторые команды компиляции в среду разработки и разработки PHP / Python (а не просто "git pull").

Каковы плюсы и минусы этих подходов?

Ответы [ 2 ]

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

Обычно лучше отдать предпочтение маршруту «генерации», чем маршруту «хранения сгенерированного контента», главным образом потому, что вы не всегда на 100% уверены в текущем состоянии указанного сгенерированного контента: синхронизируется ли он с источниками?

Хук после получения может позаботиться о push генерации соответствующего контента.
См. Git Hooks или Pro-Git Hooks .
Однако в вашем локальном экземпляре (то есть на git pull) псевдоним может комбинировать извлечение и генерацию указанного содержимого.

0 голосов
/ 21 ноября 2011

Я думаю, что # 2 - это путь, если ничего другого, потому что вы не хотите, чтобы git автоматически объединял сгенерированные файлы.

В вашем коде инициализации приложения php или python вы можете проверить метку времени на файлах idlи сгенерированные заглушки, и выдайте предупреждение и / или прервите, или запустите thrift-компилятор, если он доступен.

...