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 Enterprise 和 dep/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/