Лучшая практика для работы над двумя проектами github go

Я работаю над двумя проектами golang на основе github, где один проект зависит от другого.

Допустим, у меня есть проект A (github.com/A), зависящий от проекта B (github.com/B). Итак, на данный момент я вношу изменения в проект B, отправляю код и выполняю go get github.com/B в проекте A, чтобы получить последний код проекта B.

Эта процедура отнимает много времени и мне тоже не подходит. Я думал, что изменяющиеся файлы проекта B в местоположении GO_PATH, но, похоже, загруженные проекты в GO_PATH доступны только для чтения.

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

Отвечает ли это на ваш вопрос? Всегда требуйте последнюю версию зависимости в go.mod

Jay 25.11.2022 12:24

Вам придется автоматизировать его с помощью небольшого скрипта. Я бы предложил использовать makefile и добавить команду для получения последней версии вашей зависимости, поэтому, когда вы говорите make build, она обновляется каждый раз перед сборкой.

Jay 25.11.2022 12:26

@Jay Согласен, может понадобиться либо Makefile, либо что-то вроде Bazel.

Divyanshu Juneja 25.11.2022 13:40

Есть лучший способ: директивой «replace» в go.mod вы бы заменили github.com/B на путь в локальной файловой системе проверенного B. Это, очевидно, только во время разработки. См. github.com/golang/go/wiki/…

marco.m 25.11.2022 15:47
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
4
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте рабочие пространства Golang

Если ваша версия golang 1.18+, вы можете использовать функцию рабочих областей, чтобы улучшить свой опыт разработки.

Давайте используем ваши примеры, поэтому у нас есть github.com/A, который зависит от github.com/B.

  1. Убедитесь, что они находятся в одной родительской папке, и предположим, что имя этой папки workspace
  2. cd в workspace, затем go mod init ./A && go work use ./B
  3. В workspace беге go run github.com/A

В результате в вашей локальной среде разработки вы всегда будете использовать свою локальную версию github.com/B, поэтому нет необходимости в удаленной синхронизации.

Если вы используете предыдущую версию go, я думаю, вам лучше всего написать несколько сценариев, чтобы автоматизировать этот процесс.

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