Используя модули go, я бы хотел заменить labix.org/v2/mgo
на github.com/globalsign/mgo
.Репозиторий http://labix.org/mgo не поддерживается и был разветвлен на https://github.com/globalsign/mgo
- мой код хранится вне
$GOPATH
в каталоге ~/git/foo
- I'mс помощью go1.11
- работают другие модули go (например,
go list -m all
перечисляет другие модули, файлы go.mod
и go.sum
обновляются автоматически. См. полный файл ниже)
В файле go.mod
я пробовал следующее:
replace labix.org/v2/mgo => github.com/globalsign/mgo v0.0.0-20181015145952-eeefdecb41b842af6dc652aaea4026e8403e62df
Запуск go build
выдает следующую ошибку:
build github.com/foo/bar: cannot find module for path labix.org/v2/mgo
В документации по go help modules
обсуждается Псевдоверсии например v0.0.0-yyy..
, которые я пытаюсь использовать, потому что теги https://github.com/globalsign/mgo имеют форму r2018.06.15
, а не v1.2.3
(семантическое управление версиями).
Кроме того go help modules
говорит:
Pseudo-versions never need to be typed by hand: the go command will accept
the plain commit hash and translate it into a pseudo-version (or a tagged
version if available) automatically. This conversion is an example of a
module query.
Однако я не могу обработать команду для генерации псевдо-версии, когда я нахожусь в клонированном github.com/globalsign/mgo
(расположенном в $GOPATH/src/github.com/globalsign/mgo
).Следовательно, псевдо-версия, которую я сгенерировал вручную, может быть неправильной.
Полный файл go.mod
выглядит следующим образом:
module github.com/foo/bar
replace labix.org/v2/mgo => github.com/globalsign/mgo v0.0.0-20181015145952-eeefdecb41b842af6dc652aaea4026e8403e62df
require (
github.com/DATA-DOG/godog v0.7.8
github.com/alecthomas/assert v0.0.0-20170929043011-405dbfeb8e38 // indirect
github.com/alecthomas/colour v0.0.0-20160524082231-60882d9e2721 // indirect
github.com/alecthomas/repr v0.0.0-20181024024818-d37bc2a10ba1 // indirect
...
)