Как я могу работать с несколькими Go проектами локально? - PullRequest
1 голос
/ 06 марта 2020

Я работаю над несколькими проектами в go с использованием модулей.

Проект 1: github.com/company/project1

/
  - /auth
      - service.go
  - main.go
  - go.mod

Проект 2: github.com/company / project2

/
  - /cart
      - service.go
  - main.go
  - go.mod

Если у меня в проекте 2 / go .mod следующий импорт: github.com/company/project1, и я уже создал оба проекта на Github.

Как я могу протестировать оба проекта на местном уровне? Я имею в виду, не нажимая тестовый код (на проекте 1) и не используя ранее go get github.com/company/project1, потому что я просто хочу сделать свои sh мои последние коммиты, когда я закончу sh оба кода (проект1 и проект2).

1 Ответ

2 голосов
/ 06 марта 2020

Как отметили @ CeriseLimón и @ oakad в своих комментариях, использование replace в ваших go.mod файлах позволяет использовать локальные копии репо вместо необходимости совершать коммиты проект, который является зависимостью.

Project 2's go.mod:

module github.com/company/project2

require (
  ...
  github.com/company/project1 v0.0.0
)

replace github.com/company/project1 => LOCAL_PATH

Замените LOCAL_PATH для вашего относительного пути от проекта2 к проекту1, например, если оба находятся в разделе $GOPATH/src, LOCAL_PATH необходимо заменить на ../project1 (учитывая, что каталог project1 называется project1). Вам также следует заменить v0.0.0 на другую версию, если она применима (то есть, если project1 имеет разные версии, строка внутри блока Requirte должна указывать на правильную версию. Многоточие (...) представляет любую другую зависимость вашего проекта2 .

ПРИМЕЧАНИЕ: вы не должны помещать sh строку replace github.com/company/project1 => LOCAL_PATH в вашу VCS, если каждый разработчик не использует один и тот же относительный путь и , у вас есть какой-то вид автоматический или ручной способ удаления этой строки перед выпуском, так как вы не хотите, чтобы эта строка присутствовала в выпусках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...