Идти депо и идти генерировать

Как я могу добавить го-зависимости, которые генерируются автоматически?

У меня есть 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, были полезны при сравнении с реальным репозиторием., который содержит только объявления.

Другие вопросы по тегам