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

  • 23
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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