Go 1.5 のパッケージ バージョン管理
Go パッケージ管理の世界では、組み込みのバージョン管理メカニズムが存在しないことが疑問を引き起こしています。そして開発者間の議論。この決定の背後にある理論的根拠をさらに深く掘り下げて、利用可能な解決策を検討してみましょう。
Go のシンプルさの哲学は、パッケージ取得ツール、go get、および import ステートメントにまで及びます。これらは HEAD からパッケージを取得しますが、ブランチやタグを指定する機能がありません。この選択には利点がありますが、課題も生じます。
まず、開発者にメジャー バージョン リリースごとに別のリポジトリを作成させると、非効率が生じます。 Git 履歴は断片化され、検出のためのセマンティクスが欠如しているため、推移的な依存関係との競合は検出されないままになります。
第 2 に、バージョニングがないことが企業の導入を妨げます。 HEAD を継続的に取得すると、依存関係を制御できなくなり、予測できない結果が生じる可能性があります。さらに、人的資源が限られているため、組織が上流の変更に対応することが困難になる可能性があります。
懸念事項への対処
Go 1.5 では、これらの懸念事項を軽減するための実験的な機能としてベンダーリングが導入されました。 。 GO15VENDOREXPERIMENT=1 を設定することで有効になるベンダー機能により、開発者はコードが依存するパッケージの正確なバージョンを指定できます。
この機能により、開発者が依存関係のバージョンを配置する「ベンダー」フォルダーが作成されます。このフォルダー内のコードは、ツリー内のコードによってのみインポートできるため、依存関係を正確に制御できます。
例:
/home/user/goworkspace/ src/ mymath/ mymath.go vendor/ github.com/somebob/math math.go
この例では、外部パッケージ「github.com/somebob/math」は、以下を使用して「mymath.go」にインポートされますステートメント:
import "github.com/somebob/math"
ベンダーを使用すると、開発者はパッケージの依存関係を管理し、エンタープライズ Go デプロイメントの安定性と予測可能性を確保できます。
以上がGo 1.5 のベンダーはパッケージ バージョン管理の課題にどのように対処しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。