あるgoパッケージがgitリポジトリで公開されていて、かつsshでしかアクセスできない状況。
先のエントリで書いたようにパッケージ名からメタ情報を取得できなくてgo getできない。
# 必要に応じてexport GO111MODULE=on
$ go get source.developers.google.com/p/mypj-xxxxx/r/check
go get source.developers.google.com/p/mypj-xxxxx/r/check: unrecognized import path "source.developers.google.com/p/mypj-xxxxx/r/check" (parse https://source.developers.google.com/p/mypj-xxxxx/r/check?go-get=1: no go-import meta tags ())
URLにVCS(git)を示す修飾子を付けることでgo get
できるようになるが、
$ go get source.developers.google.com/p/mypj-xxxxx/r/check.git
go getされる側もgo getする側もパッケージ名として「source.developers.google.com/p/mypj-xxxxx/r/check.git」を使う必要がある。
これをgo getする側のgo.modにreplaceを書くことで「.git」の付かないパッケージ名のままアクセスできるようになる。
// go.mod
module source.developers.google.com/p/mypj-xxxxx/r/sample
replace source.developers.google.com/p/mypj-xxxxx/r/check => source.developers.google.com/p/mypj-xxxxx/r/check.git v0.1.0
require source.developers.google.com/p/mypj-xxxxx/r/check v0.1.0
記述が二倍になるので数が多いと困るけど、既存のパッケージ名を変更したくない時の回避に。
環境
- macOS Mojave
- go 1.12.6