分享
  1. 首页
  2. 文章

让golang的get命令兼容gitlab

Wendal Chen · · 7105 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

我们有些什么呢?

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 exist
package 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),都按这里的配置进行设置

按上述的正则表达式,输入git.wendal.net/wendal/gofly可以得到

root = git.wendal.net/wendal/gofly
repo = git.wendal.net/wendal/gofly
vcs = 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\go
go install

有疑问加站长微信联系(非本文作者)

本文来自:Wendal 随笔

感谢作者:Wendal Chen

查看原文:让golang的get命令兼容gitlab

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
7105 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏