Идти депо и идти генерировать
Как я могу добавить го-зависимости, которые генерируются автоматически?
У меня есть protobuf-репозиторий с единственным go-файлом в корне, который содержит следующее:
//go:generate ./scripts/generate_go_sources.sh
package protobuf
Упомянутый скрипт проходит через все .proto
файлы в подпапке "message/" и генерирует исходные файлы.
После этого репозиторий содержит много подпакетов, таких как
ptyes/package1/file.go
ptyes/package2/file.go
Я не хочу проверять эти файлы в системе контроля версий.
Как я могу использовать этот репозиторий с go dep?
Я пытаюсь перейти на использование dep для управления зависимостями, но я не могу убедить его загрузить этот репозиторий и выполнить команду "go generate".
Solving failure: No versions of github.com/company/protobuf met constraints:
master: Could not introduce github.com/company/protobuf@master, as it is not allowed by constraint vendoring from project github.com/company/myProject.
develop: Could not introduce github.com/company/protobuf@develop, as it is not allowed by constraint vendoring from project github.com/company/myProject.
vendoring: Could not introduce github.com/company/protobuf@vendoring due to multiple problematic subpackages:
Subpackage github.com/company/protobuf/ptypes/package1 is missing. (Package is required by (root).)
Subpackage github.com/company/protobuf/ptypes/package2 is missing. Package is required by: (root)
go dep обнаруживает правильный репозиторий (vendoring-branch), но отбрасывает его, потому что не может найти необходимые подпакеты. Они появляются только после того, как в корневом пакете был вызван "go generate".
1 ответ
Из документации godep о миграции:
Деп предполагает, что весь сгенерированный код существует и был передан в источник.
Поэтому кажется невозможным делать то, что я хочу. Решение состоит в том, чтобы создать репозиторий, содержащий сгенерированные источники, и убедиться, что эти источники автоматически генерируются и синхронизируются с фактическими исходными данными (в моем случае необработанные файлы *.proto).
Поскольку я не могу поместить сгенерированные источники в тот же репозиторий, что и исходные данные, необходимо полностью синхронизировать эти два репозитория (одинаковые ветви, одинаковые теги), чтобы версии, используемые go dep, были полезны при сравнении с реальным репозиторием., который содержит только объявления.