Go
GitHub

社内リポジトリのサブディレクトリをgo getするにはrepo名に.gitをつける

More than 3 years have passed since last update.

Github Enterpriseであれどこであれ、VCSにホストしているGoパッケージは、通常

go get <domain>/foo/bar

のようなremote import pathによりgo getすることができます。

しかし、この一般的なimport pathでは、go getしたいパッケージがサブディレクトリにあるとき、既定ドメイン(github.comなど)以外、つまり社内リポジトリなどでは、以下のようなエラーが発生します。

たとえば、<domain>/foo/barレポジトリのsub-dirディレクトリをgo getしたい場合、こうなります。

go get <domain>/foo/bar/sub-dir

package <domain>/foo/bar/sub-dir: unrecognized import path "<domain>/foo/bar/sub-dir"

これは、go getコマンドがimport pathからリポジトリとパスを判別できず、リソースに到達できないことによるものです。

(ここで諦めて<domain>/foo/bargo getしてもいいのですが、リポジトリトップに.goファイルを置かないプロジェクト構成の場合、no buildable Go source filesエラーになります)

これを回避するためには、リポジトリ名の後にVCSを記入してあげます。というか、一般的なimport pathはこのVCS名を省略した形だということみたいですね。

go get <domain>/foo/bar.git/sub-dir

出典:go - The Go Programming Language