讓golang的get命令相容gitlab

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

我們有些什麼呢?

Gitlib已經發布了6.0,號稱是企業級的版本了,作為私人git庫的首選,自然越來越多人用

假設 有這樣一個golang 的庫,URL是 http://git.wendal.net/wendal/gofly

如果嘗試執行下面的語句去擷取這個庫的話

go get git.wendal.net/wendal/gofly#會輸出package git.wendal.net/wendal/gofly: unrecognized import path "git.wendal.net/wendal/gofly"

然而,如果我們輸入

go get git.wendal.net/wendal/gofly.git#會輸出fatal: repository 'git.wendal.net/wendal/gofly' does not existpackage git.wendal.net/wendal/gofly.git: exit status 128

為什麼呢?貌似go get不支援自訂的庫地址啊(git的)

且看 $GOROOT/src/cmd/go/vcs.go裡面的一段代碼

    // General syntax for any server.    {        re:   `^(?P(?P([a-z0-9.\-]+\.)+[a-z0-9.\-]+(:[0-9]+)?/[A-Za-z0-9_.\-/]*?)\.(?Pbzr|git|hg|svn))(/[A-Za-z0-9_.\-]+)*$`,        ping: true,    },

可以看到, 對於未知的庫地址(非github/Google Code/Bitbucket/Launchpad),都按這裡的配置進行設定

按上述的Regex,輸入git.wendal.net/wendal/gofly可以得到

root = git.wendal.net/wendal/goflyrepo = git.wendal.net/wendal/goflyvcs  = git

What? 當使用git進行clone的時候,其實就執行了

git clone $repo $GOPATH/src/$root#展開之後(假設GOPATH=/opt/gopath)git clone git.wendal.net/wendal/gofly /opt/gopath/src/git.wendal.net/wendal/gofly

git庫的地址當成本地路徑了,不出錯才怪呢

怎麼解決呢? 添加自訂的庫地址,跟github類似

首先,拷貝一份github的配置

    // Github    {        prefix: "github.com/",        re:     `^(?Pgithub\.com/[A-Za-z0-9_.\-]+/[A-Za-z0-9_.\-]+)(/[A-Za-z0-9_.\-]+)*$`,        vcs:    "git",        repo:   "https://{root}",        check:  noVCSSuffix,    },

改成

    // git.xwoods.org    {        prefix: "git.wendal.net/",        re:   `^(?Pgit\.wendal\.net/(?P

.[A-Za-z0-9_.\-]+/[A-Za-z0-9_.\-]+))(/[A-Za-z0-9_.\-]+)*))$`, ping: false, repo: "git@git.wendal.net:{p}.git", vcs : "git", },

注意 re和repo,做了特別處理哦,多一個p變數, 這樣repo就把湊成標準的ssh式git地址,自動使用密鑰(哈哈,私人庫嘛)

最後,還需要把golang編譯

# linux/mac 下$GOROOT/src/make.bash#windows下cd %GOROOT%\src\cmd\gogo install
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.