以前はgo dep
を使用していましたが、現在は公式ツールがgo mod
であることを確認してください。
go dep
を使用すると、ローカルの依存関係パッケージをベンダーに追加し、ignored
をGopkg.toml
に追加して無視できますリポジトリからパッケージを検索します。 go dep update
は正常に実行できます。
ここでgo mod
を使用します。ローカル依存パッケージをベンダーに追加し、exclude
をgo.mod
に追加します。しかし、go mod tidy
を実行すると、プロジェクトがimport xxx
であってもパッケージが削除されます。
私は何をしましたか:
go.modexclude privaterepo.com/bb/bb
を変更します
ローカルモジュールはhttpsをサポートしないプライベートリポジトリにあるため、ローカルモジュールをベンダーにコピーします。
vendor |-github.com/aa/aa |-privaterepo.com/bb/bb
それで、local packageをベンダーに追加してgo mod
を削除しないようにするにはどうすればよいですか?
では、ローカルパッケージをベンダーに追加し、modを削除しないようにするにはどうすればよいですか?
まあ、これはできないと思います。これは、それがどのように機能するかではありません。 go mod vendor
managesベンダーフォルダ。
Go.modからパッケージをexclude
ingする代わりに、replace
ディレクティブを追加して、goreツールにprivaterepo.comではなくローカルファイルシステムからパッケージを検索するように指示する必要があります。 https://github.com/golang/go/wiki/Modules#when-should-i-use-the-replace-directive からの引用
replaceは、次のようなマルチモジュールプロジェクト内のモジュールのディスク上の相対位置または絶対位置を移動ツールに通知するためにも使用できます。
replace example.com/project/foo => ../foo
だからあなたの場合:ベンダーにprivaterepo.com/bb/bbを手動で入れようとしないでください、しかしそれを現在のプロジェクトの外のどこかに持って使ってください
replace privaterepo.com/bb/bb => ../bb
そして、go mod
これをファイルシステムからベンダーにコピーします。
数十 of SO投稿、ブログなど)を試した後、everyメソッドを試しましたが、これは何ですか思いついたすべてのものをカバーしています。
これらは、gitを安全に認証してリポジトリを複製するすべての方法とツールですインタラクティブなパスワードプロンプトなし。
Just Works™が必要ですか?これは魔法の銀の弾です。
アクセストークンを取得し(GithubまたはGiteaの手順が必要な場合は、チートシートのセクションを参照してください)、環境変数に設定します(ローカル開発とデプロイメントの両方)。
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
Githubの場合、次の行をコピーして実行しますverbatim:
git config --global url."https://api:[email protected]/".insteadOf "https://github.com/"
git config --global url."https://ssh:[email protected]/".insteadOf "ssh://[email protected]/"
git config --global url."https://git:[email protected]/".insteadOf "[email protected]:"
おめでとうございます。今や、自動化ツールのgitリポジトリのクローン作成は、httpsを使用する場合でも、ssh urlのいずれかのスタイルを使用する場合でも、パスワードプロンプトによって妨げられません。
Githubを使用していませんか?
他のプラットフォーム(Gitea、Github、Bitbucket)の場合は、URLを変更するだけです。ユーザー名は変更しないでください(任意ですが、個別の構成エントリに必要です)。
互換性
これはMacOS、Linux、Windows(Bashの場合)、Docker、CircleCI、Heroku、Akkerisなどでローカルに動作します。
詳細
チートシートの「.gitconfigの代わりに」セクションを参照してください。
セキュリティ
チートシートの「セキュリティ」セクションをご覧ください。 Dockerなどの「AskPass」メソッドを好む人もいます。Dockerホストを信頼しない場合や、Dockerイメージを公開しない場合に不可欠です。