美文网首页
go import svn 的代码库

go import svn 的代码库

作者: yz08150 | 来源:发表于2021-10-28 18:24 被阅读0次

需求

项目 test0 需要引用一个 svn 的代码库
这个代码库是一个公司内部的代码库
应该怎么添加

module test0

go 1.16

require (
    github.com/gin-gonic/gin v1.7.1
    此处需要添加公司内部的svn的代码库
)

解决方式

下面的解决方式是在 go v1.16.5 版本下尝试的

1. test0项目中,引用 svn 代码库地址,使用 replace 的方式,简化路径导入
module test0

go 1.16

require (
    github.com/gin-gonic/gin v1.7.1
    serverboot v0.0.1
)

replace serverboot => svn.xxx.com/a/b/c/src.svn 666

如上面的 servboot 就是为了引用 svn 代码库
svn.xxx.com/a/b/c/src 是你的svn代码库的 真实地址
svn.xxx.com/a/b/c/src.svn 注意 .svn 后缀,必须添加,为了让go mod 自动使用 svn 的方式去拉取代码,而不是 代理的方式

2. 设置 go 的 环境变量
set GOPROXY=https://goproxy.io,direct
set GOINSECURE=svn.xxx.com
set GOPRIVATE=svn.xxx.com

GOPROXY 添加一个 direct 的值,是为了让 go 如果通过 goproxy.io 拉取不到代码的话, 尝试使用 direct 的方式去拉取。go 是根据 svn.xxx.com/a/b/c/src.svn 这个地址中的后缀 .svn 去确定拉取方式的
Goland 的 go 的代理设置,最好也加上 direct

image.png

GOINSECURE 添加代码库的地址svn.xxx.com,去掉路径,是为了让go拉取代码的时候,不使用安全的方式,比如https。如果不添加,对于svn拉取的时候,会使用 ssh 的方式去拉取。
GOPRIVATE 添加代码库的地址svn.xxx.com,去掉路径

当设置完,使用一次后,再次看 env ,会发现 这些值也被设置了 :
set GONOSUMDB=svn.xxx.com
set GONOPROXY=svn.xxx.com

3. 然后直接 go build 即可

如果这样改完的话,可能会报
missing go.sum entry 的错误,使用 go mod tidy 执行一下,即可

为什么

https://golang.google.cn/cmd/go/
https://golang.google.cn/ref/mod#go-mod-file

可参照上面的两个官方文档中的相关描述

go mod 是可以通过 默认的代理方式,自定义代理方式,direct 的方式(即通过 .xxx 后缀来识别拉取方式的,比如 .git .svn .hg 等)

如果使用代理的方式,不管是官方代理,还是自定义的代理,都必须实现 GOPROXY 的协议
https://golang.google.cn/cmd/go/#hdr-Remote_import_paths
https://golang.google.cn/ref/mod#goproxy-protocol

然后就是 direct 的方式
direct 方式涉及到的几点内容:

  1. 怎么确定使用哪种拉取方式 svn? git?
    使用路径最后加上 .xxx 的方式

  2. svn 可以使用了,那么版本怎么办?
    通常情况下,go 使用的都是 规范化的版本,比如 v1.1.1
    但是,go 也可以使用非规范化的版本,比如 使用标签,使用分支名,等等,比如上面的 svn 版本 666 ,就是一个非规范化版本
    在go mod 下载完导入之后,会发现 项目的 go.mod 中的 非规范化版本,比如 666 ,自动的变成了一个 规范化的版本 v0.0.0-2021111111111111-000000000666
    如果想要使用最新版本,666 换成 head 即可
    具体可参照 https://golang.google.cn/ref/mod#versions

  3. 版本也可以了,svn 的用户名密码怎么办?
    默认的情况下,go 使用本机用户名 ,ssh 的方式 去连接 svn 的机器。
    这个很不好处理,后来尝试 go get -insecure svn.xxx.com/a/b/c.svn@666 的方式,发现成功了
    但是,go 以后版本会 去掉 -insecure 参数,并且,也不好设置这个参数,所以,使用 上述配置 GOINSECURE 变量值的方式

相关文章

  • go import svn 的代码库

    需求 项目 test0 需要引用一个 svn 的代码库这个代码库是一个公司内部的代码库应该怎么添加 解决方式 下面...

  • C调用go静态库

    Go 生成C动态库.so和静态库.a 源代码 package main import "C" import "fm...

  • Eclipse for Mac 导入项目

    1.先拿到SVN地址,用SVN地址import代码到eclipse

  • 操作层——手残如我

    0、svn - 本地代码和svn上的代码分开1、查看Python安装路径import sysprint(sys.p...

  • svn 常用的几个命令

    1.把项目上传到svn(import) 2.检出代码(checkout) 3.往版本库中添加新的文件(add) 4...

  • 【Golang】goimport格式规范

    go import格式规范 对于go import的格式容易被忽略,但是标准的import会让代码阅读者一目了然。...

  • SVN服务器搭建

    1.创建svn库 svnadmin create /Users/ztw/svn 2.配置svn (代码要置顶,否则...

  • OS-X系统SVN命令行

    # 查看本地代码库状态 $ svn st 错误提示:"is not a working copy",必须在svn的...

  • GB代码规范1.0

    GB代码规范 头文件#import的顺序(商量) 写法模板#import <系统库>#import <第三方库>#...

  • git archieve

    如果你用过svn,一定知道svn export,可以用来从代码库中导出一份干净的代码(没有.svn等)。git是否...

网友评论

      本文标题:go import svn 的代码库

      本文链接:https://www.haomeiwen.com/subject/gsbvaltx.html