• Go语言公开库与私有库及版本控制


    公开库与私有库

    go mod除了用作模块化开发之外,也是新版本go源码库的私有与共有的重要途径。

    module gitee.com/xvwen/gocmd/cwgogen
    
    go 1.21.5
    
    • 1
    • 2
    • 3

    在go mod中module的名称规定了该源码是否共有,如果该名称与远程git仓库地址一致,则该源码可以通过go get获取到,此时为共有库。否则为私有库,go get无法获取。

    在这里插入图片描述
    在这里插入图片描述

    一个go.mod控制当前文件下所有文件的公有性。例如http_response,qrcode和go mod在同一文件夹下那么要获取到对应源文件的地址就是go get gitee.com/xvwen/go-component/http_responsego get gitee.com/xvwen/go-component/qrcode

    gitee.com/xvwen/go-component为根路径。

    go get任意一个源文件都是将整个仓库的源文件都下载。

    版本控制

    在使用上一节的规则提交代码后,获取远程仓库代码是又遇到了问题,当本地使用go get获取一个版本的源码后,又更新了远端仓库,此时再次go get一下go get gitee.com/xvwen/gocmd/cwgogen此时发现了一个重要问题,没有版本控制。

    使用go get时应该是go get xxx@version,而上述的代码却没有版本控制,看到gopath/pkg如下:

    在这里插入图片描述
    再使用go get命令后已经获取到了最新的版本,但是项目的版本却没有变,如下:

    在这里插入图片描述

    解决这个问题可以在go get的路径后面添加一个@latest每次获取最新的版本,没有版本控制的话默认是本地版本

    在这里插入图片描述
    在这里插入图片描述
    可以看到即使美誉认为控制版本,系统可以自动生成版本号,这个版本号规则是v0.0.0-时间-git commit id这个默认值很长也不好使用,比例与版本切换。

    git tag 是 Git 中用于为某个特定的提交(commit)创建标签的命令。标签是一个指向某个提交的引用,可以帮助你在代码库中标记重要的里程碑、版本或发布。标签通常用于表示软件版本号,以及代码库中的重要事件。

    在git仓库中,git tag是作为仓库中版本控制的,使用git作为go语言源码的公开库,显然也必须如此,go底层已经完成了解析go get xxx@version的version就对应git tag。

    在这里插入图片描述

  • 相关阅读:
    这家公司,太过恶心,今天必须曝光它!
    【Python Web】Flask框架(九)MYSQL+python案例
    Lora项目--组网1主机多从机
    Qt中利用QTextBrowser控件设计日志窗口
    Redis三大缓存问题(穿透、击穿、雪崩)
    自定义字典简化代码解决定制需求
    程序员如何提升自己写代码的能力?
    LC-895. 最大频率栈(优先队列+哈希表)
    【代码规范】switch 块级的作用域问题
    JAVA集合
  • 原文地址:https://blog.csdn.net/xwh3165037789/article/details/136375247