golang/dep 如何使用私有 gitlab repo

在简书现在的 golang 项目里面我们使用 dep,毕竟在现在不算很完善的 golang 依赖工具链体系里面,这个项目挺不错的,同时也是官方认可的。

dep is the official experiment, but not yet the official tool. — 摘自 golang/dep 的 Readme

不过最近倒是碰到一个问题,简书内部有一个通用的事件发送 SDK 会发送各种事件到我们的 Kafka。那现在既然有了 golang 的项目,那我们就需要有 Golang 的 SDK。完成这个 SDK 是一件很顺利的事情,但是在将我们自己写的 SDK 引入我们的项目的时候却出现了问题。

因为 SDK 是 host 在我们自己内部的 gitlab repo 上的,所以我理所应当的加入了如下依赖:

[[constraint]]
  branch = "master"
  name = "git.jianshu.io/Qian/go"

但不同于使用 Github 上的开源项目的是,我们自己的 internal gitlab 并不提供 https 的公开使用接口,一切都要走 ssh,然而 dep 并没有为此做好准备。在 Github 上有一个讨论这个问题的 Open Issue: Support for private repositories e.g. Github Enterprisedep/FAQ.md 中也有关于如何使用 API Token 来访问 Github Private Repo 的办法: How do I get dep to consume private git repos using a GitHub Token? 但是用在这里并不适合。

最终还是找到了修改 git 配置的一个办法,修改 ~/.gitconfig 加入如下配置,让 git 在访问 https://git.jianshu.io 的时候自动转为使用 ssh 来访问:

[url "git@git.jianshu.io:"]
	insteadOf = https://git.jianshu.io/
comments powered by Disqus