2017-07-10 8 views
0

ゴーベンダーを使用する場合、go install,govendor install +localおよびgovendor install +vendor,^programの違いは何ですか?`go install`、` govendor install + local`と `govendor install + vendor、^ program`の違いは何ですか?

govendor install +vendor,^programは、私のすべてのベンダーパッケージをビルドしてインストールすると言います。何をどこにインストールするのですか?プロジェクトとベンダーのコマンド実行ファイルを$GOPATH/binに、プロジェクトとベンダーのパッケージオブジェクトを$GOPATH/pkgにインストールしますか?

govendor install +localはすべてをあなたのリポジトリにのみ作成すると言います。それはどういう意味ですか? vendor/binvendor/pkgが作成されますか?

プロジェクトでgo installを実行するとどうなりますか?上記の2つのコマンドとはどのような違いがありますか?

答えて

0

先ず、依存関係管理とワークスペースフォルダ構造のための新しいアイデアが登場しました。プロジェクトが配置される厳密な階層があり($gopath/src/site.com/user/project)、他のプロジェクトは他のプロジェクトの最新バージョンを単純にインポートします。この問題は、上流のプロジェクトによってAPIが変更された場合、プロジェクトがわかりにくくなることがあります。これはベンダーが入る場所です。

ベンダーは、プロジェクトにインポートされた$gopath/srcのすべてを含むサブディレクトリーです。違いは、上流のプロジェクトで新しい機能や修正が導入された場合、ベンダーが更新されないことです。したがって、自分で更新する必要があります。 go to import(最新バージョンの場合)は、最初にベンダーをチェックして、$gopathで最新バージョンを探して、明白な理由でビルドがわかりにくくなるのを防ぎます。

go installあなたの$gopathの依存関係を最新のバージョンに更新します。すべての新しいプロジェクトとベンダーのないものが使用するバージョンです。

govendor install +vendor,^programは、特定のプロジェクトベンダーの依存関係を更新します。これは、別のコミットで実行する必要があります。更新がプロジェクトを壊すかどうかを確認できるように、go test; govendor; git commit; go testする必要があります。

govendor install +local明らかにプロジェクトをビルドするだけです。

また、govendorではなくgodepをIMHOで使用する必要があります。 IHMOはより良いワークフローを持っています。 $gopathに最新のバージョンがあり、プロジェクトをgodep updateで更新できます。ゴラン1.10では標準とされています。

+0

はい、 'godep'を使用してください。 – eduncan911

+0

(1)govendorプロジェクトが$ GOPATHと何の関係もない場合、 'go install 'を実行すると、$ GOPATHの依存関係が更新されるのはなぜですか? (2)がインストールされ、 'govendor install + vendor、^ program'がプロジェクトをビルドしますか?あなたはそれに言及しなかった。 (3) 'govendor install + vendor、^ program'と' govendor install + local'がプロジェクトをビルドする場合、それはどのビルドになりますか?どのディレクトリが 'govendor project>'をビルドするのですか? (4)godepをgodepからgovendorに切り替える 'gin'を使用しています。だから私はゴブンを使っているのです。 godepがgolang 1.10で標準になる場合、なぜGinはそれを落としますか?ありがとう – sgon00

+0

@ eduncan911私は 'god'を' godep'から 'govendor'に切り替えています。だからこそ、私は 'govendor'を使っているのです。 Golang 1.10で 'godep'が標準になると、' gin'はなぜそれを落として代わりに 'govendor'を使うのでしょうか?ありがとう。 – sgon00