Go的Get命令兼容公司Gitlab倉庫的HTTP協議


 

    對於公司的私有Gitlab倉庫,沒有對https支持,在使用最新版本的go get命令時,需要使用-insecure參數來支持http,但如果導入的包里邊依賴了需要https的倉庫,就不好使了,折騰了一下,解決方案如下:

 

一、為Gitlab添加SSH Keys

1.生成 ssh keys

ssh-keygen -t rsa -C "myname@mycompany.com"

 

2.查看內容

cat ~/.ssh/id_rsa.pub

 

3.復制到剪貼板

Windows

clip < ~/.ssh/id_rsa.pub

Mac

pbcopy < ~/.ssh/id_rsa.pub

Linux (requires xclip)

xclip -sel clip < ~/.ssh/id_rsa.pub

 

4.粘貼到Gitlab個人中心的SSH Keys Settings

 

二、配置.gitconfig文件

Windows

notepad C:\Users\{你的Windows用戶名}\.gitconfig

Linux/Mac

vi ~/.gitconfig

 

寫入

[url "git@git.mygitlab.com:"]
    insteadOf = https://git.mygitlab.com

 

這里簡化一下可以直接使用命令

git config --global url."git@git.mygitlab.com:".insteadOf "https://git.mygitlab.com"

 

 

三、驗證

go get git.mygitlab.com/myname/xxx.git

然后到go的src目錄就可以看到新增了git.mygitlab.com/myname/目錄了,當然源碼也在這個目錄下

 

    考慮到https可是以后的趨勢,所以還是推動一下公司盡快用上https的私有倉庫吧。

 

四、補充

補充一下可能遇到的問題:

1、提示信息:package git.mygitlab/myname/gopublic.git: no buildable Go source files in d:\gosrc\src\git.mygitlab.com\myname\gopublic.git

出現這個提示其實表示你的文件已經下載成功了

 

2、這種方法拉回來的包是不會下載包內的依賴的,需要自己補充。原因見上提示信息。

 

3、在使用時要注意需要修改目錄名,如

d:\gosrc\src\git.mygitlab.com\myname\gopublic.git

import時應該是這樣

import "git.mygitlab.com/myname/gopublic.git/redis"

但實際因為代碼里邊引用的包路徑是

import "gopublic/redis"

導致在go build時會報錯,找不到包,所以要將

d:\gosrc\src\git.mygitlab.com\myname\gopublic.git

移動到

d:\gosrc\src\gopublic

 

以上是使用上要注意的地方


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM