多くのグーグルが試した後、私はプライベートリポジトリで$ go get
作業を取得する方法を探しています。
最初の試行:
$ go get -v gitlab.com/secmask/awserver-go
Fetching https://gitlab.com/secmask/awserver-go?go-get=1
https fetch failed.
Fetching http://gitlab.com/secmask/awserver-go?go-get=1
Parsing meta tags from http://gitlab.com/secmask/awserver-go?go-get=1 (status code 200)
import "gitlab.com/secmask/awserver-go": parse http://gitlab.com/secmask/awserver-go?go-get=1: no go-import meta tags
package gitlab.com/secmask/awserver-go: unrecognized import path "gitlab.com/secmask/awserver-go
はい、ログイン情報を提供する方法がわからなかったため、メタタグは表示されませんでした。
2回目の試行:
https://Gist.github.com/shurcooL/6927554 に従ってください。 .gitconfigに構成を追加します。
[url "ssh://[email protected]/"]
insteadOf = https://gitlab.com/
$ go get -v gitlab.com/secmask/awserver-go --> not work
$ go get -v gitlab.com/secmask/awserver-go.git --> work but I got src/gitlab.com/secmask/awserer-go.git
はい、動作しますが、プロジェクト名に.git
拡張子が付いている場合、元の名前に変更できますが、$ go get
があまり良くないときはいつでも実行できます。
設定することが1つあります。この例はGitHubに基づいていますが、これによりプロセスが変更されることはありません。
$ git config --global [email protected]:.insteadOf https://github.com/
$ cat ~/.gitconfig
[url "[email protected]:"]
insteadOf = https://github.com/
$ go get github.com/private/repo
適切な方法は、リポジトリを手動で適切な場所に配置することです。リポジトリが存在すると、go get -u
を使用してパッケージを更新し、go install
を使用してインストールできます。という名前のパッケージ
github.com/secmask/awserver-go
に行く
$GOPATH/src/github.com/secmask/awserver-go
入力するコマンドは次のとおりです。
cd $GOPATH/src/github.com/secmask
git clone [email protected]:secmask/awserver-go.git
弊社のgitlabでプライベートリポジトリを使用してgo get
で問題が発生しました。私は解決策を見つけようとして数分を失いました。そして、私はこれを見つけました:
プライベートトークンを取得する必要があります:
https://gitlab.mycompany.com/profile/account
プライベートトークンでヘッダーを追加するようにgitを構成します。
$ git config --global http.extraheader "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN
リクエストをsshからhttpに変換するようにgitを設定します:
$ git config --global url."[email protected]:".insteadOf "https://gitlab.mycompany.com/"
最後にgo get
を通常通り使用できます:
$ go get gitlab.com/company/private_repo
GitLab issue 5769 のように見えます。
GitLabでは、リポジトリは常に
.git
で終わるため、リポジトリ名の最後に.git
を指定して動作させる必要があります。次に例を示します。import "example.org/myuser/mygorepo.git"
そして:
$ go get example.org/myuser/mygorepo.git
GitHubは
".git"
を追加することでこれを解決するようです。
正しいメタタグが配置されている であれば、「 Goのリポジトリ取得のサポートを追加。#5958 」で解決されるはずです。
Go自体にはまだ問題がありますが、「 cmd/go
:go getはHTML5ドキュメントでメタタグを検出できません 」。
SSHを使用して既にgitを取得している場合、- この答えAmmar Bandukwala による簡単な回避策です。
$ go get
はgit
を内部的に使用します。次の1つのライナーにより、git
が作成され、その結果$ go get
がSSHを介してパッケージを複製します。
Github:
$ git config --global url."[email protected]:".insteadOf "https://github.com/"
BitBucket:
$ git config --global url."[email protected]:".insteadOf "https://bitbucket.org/"
ユーザー固有のssh-configを作成したため、ユーザーは正しい資格情報とキーで自動的にログインします。
最初にキーペアを生成する必要がありました
ssh-keygen -t rsa -b 4096 -C "[email protected]"
~/.ssh/id_my_domain
などに保存しました。これは、Githubアカウントに接続したキーペア(プライベートとパブリック)でもあるため、私のものはin~/.ssh/id_github_com
に格納されていることに注意してください。
~/.ssh/config
という名前のファイルにエントリを作成(または変更)しました:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_github_com
別のサーバーでは、「ssh-url」は[email protected]:username/private-repo.git
であり、このサーバーのエントリは次のようになります。
Host domain.com
HostName domain.com
User admin
IdentityFile ~/.ssh/id_domain_com
User
、Host
、およびHostName
が正しく設定されていることを確認してください。
これで、goパスを参照し、go get <package>
、たとえばgo get main
を参照できます。ファイルmain/main.go
には、パッケージ(上記の最後の例)domain.com:username/private-repo.git
が含まれます。
Github oauth token here を生成し、githubトークンを環境変数としてエクスポートします。
export GITHUB_TOKEN=123
基本認証URLを使用するようにgit configを設定します。
git config --global url."https://$GITHUB_TOKEN:[email protected]/".insteadOf "https://github.com/"
これで、プライベートリポジトリをgo get
できます。