Versioned Go (vgo)

收录了 11 篇文章 · 1 人关注

  • Go Modules 终极入门

    Go modules 是 Go 语言中正式官宣的项目依赖解决方案,Go modules(前身为vgo)于 Go1.11 正式发布,在 Go1.14 已经准备好,并且可以用在生产上(ready for production)了,Go官方也鼓励所有用户从其他依赖项管理工具迁移到 Go modules。 而 Go1.14,在近期也终于正式发布,Go 官方亲自 “喊” 你来用: 因此在今天这篇文章中,我将给大家带来 Go modules 的 “终极入门”,欢迎大家一起共同探讨。 Go modules 是...

  • Go 语言的 Modules 系统介绍

    即将发布的 Go 语言 1.11 版本将会给我们带来对 *modules*(模块)的实验性支持,这是 Go 语言新的一套依赖管理系统。 (译注:很多编程语言中,把 modules 译作「模块」,但由于目前该机制在 Go 语言还没正式发布,因此尚未有非常普及的译法。而类似的 vendor 一词的翻译,大多中文文章都是采取保留英文原文的方式处理,因此本文对 modules 的翻译参考 vendor 的处理:保留英文原文) 前些日子,[我简单地写了一编关于它的文章](https://rob...

  • 探索 vgo

    昨天,Russ Cox 发布了 [vgo](https://research.swtch.com/vgo),作为一个现有 go 构建命令的继任者,添加了一直缺失的包版本管理功能。虽然它只是一个大胆的尝试,但是在大家都认为 [dep](https://github.com/golang/dep) 将要成为 Go 语言官方正式的包管理工具的时候,它的出现多少让大家有点意外。Russ 写的 [vgo 简介](https://research.swtch.com/vgo-intro) 和一起发布的 [v...

  • 定义 Go 模块(vgo)

    本文译自 Defining Go Modules, Go & Versioning 的第 6 部分, 版权@归原文所有. 正如在概述文章中介绍的, Go 模块是作为一个版本化的软件包集合单元, 连同列出其他所需模块的 go.mod 文件. 转向模块是我们重新审视和修正 go 命令如何管理源代码的许多细节的机会. 在我们打算使用模块弃用当前的 go get 模型时, 10 年已经过去了. 我们需要确保模块设计将在未来十年为我们提供良好的服务. 尤其是: 我们希望鼓励更多的开发人员为他们的软件包打标...

  • 可复制, 可验证, 已验证的构建(vgo)

    本文译自 Reproducible, Verifiable, Verified Builds, Go & Versioning 的第 5 部分, 版权@归原文所有. 一旦 Go 开发人员和工具都共享了包版本控制的词汇表, 那么在工具链中添加可复制, 可验证以及已验证的构建就相对简单了。事实上, 这基本上已经在 vgo 原型中了. 由于人们有时对这些术语的确切定义不一致,让我们来建立一些基本的术语. 这篇文章: 一个可复制的构建, 当重复构建时, 会产生相同的结果. 一个可验证的构建, 记录足够的...

  • 最小版本选择(vgo)

    本文译自 Minimal Version Selection, Go & Versioning 的第 4 部分, 版权@归原文所有. 版本化的 Go 命令必须决定在每个版本中使用哪个模块版本. 我把指定构建中用到的模块和版本列表称之为构建列表. 为了稳定开发, 今天的构建列表也必须是明天的构建列表. 但是, 开发人员也必须允许更改构建列表: 升级所有模块, 升级一个模块或降级一个模块. 因此版本选择问题是定义其意义并给出算法实现, 构建列表中的 4 个操作为: 构造当前的构建列表. 将所有模块升...

  • 尝鲜vgo

    > 查看原文:[blog.keyboardman.me](http://blog.keyboardman.me/2018/02/23/early-adopters-versioned-go/) 一直以来,对go来说依赖包的版本控制上没有一个好的方案,当前主要有两种方式`Import Versioning`和`Semantic Versioning`。 * Import Versioning:`gopkg.in`网站,其实是GitHub版本变化的重定向器,你可以通过`gopkg.in/ya...

  • 也许 Go 开发可以更简单!Go += Package Versioning

    > > 简评:对于Go来说一直以来依赖包的版本控制上没有一个好的方案,尽管社区诞生了不下十余个解决该问题的工具,但一直以来没有一个官方的支持。这个提案有望在Go > 的下个版本中看到官方的包版本控制了,去除了GOPATH依赖,同时还引入了module 的概念,真正意义上实现了重编译,可谓一次大的变更 是时候为 Go 添加包版本控制了! 更确切地说,我们需要把包版本的概念普及到Go 开发者和工具常用词汇中,以便在后续的相互沟通时能准确一致的表达哪些程序代码需要编译、运行和解析。同样,go 命...

  • 语义导入版本控制

    本文译自 Semantic Import Versioning, Go & Versioning 的第 3 部分, 版权@归原文所有. 如何将不兼容的更改部署到现有软件包 ? 这是任何包管理系统中的根本挑战和决断. 问题的答案决定了所产生的系统的复杂性, 它决定了如何轻松或难以使用包管理. (它还决定如何轻松或难以实现包管理, 但用户体验更重要.) 为了回答这个问题, 这篇文章首先介绍了 Go 的导入兼容性规则: 如果旧包和新包具有相同的导入路径, 新软件包必须向后兼容旧软件包. 我们从 Go ...

  • 版本化 Go 之旅

    本文译自 A Tour of Versioned Go (vgo), Go & Versioning 的第 2 部分, 版权@归原文所有. 对我而言, 设计意味着构建, 拆除和再次构建, 一遍又一遍. 为了编写新的版本控制提案, 我构建了一个原型 vgo, 来处理许多细微的细节. 这篇博文展示了如何使用 vgo. 你现在可以通过运行 go get golang.org/x/vgo 下载并尝试 vgo. Vgo 是 go 命令的一个直接替换(和分支拷贝). 你运行 vgo 而不是 go, 它将使用...

  • Go += 包版本

    本文译自 Go += Package Versioning, Go & Versioning 的第 1 部分, 版权@归原文所有. 我们需要将包版本控制添加到 Go. 更确切地说, 我们需要将软件包版本的概念添加到 Go 开发人员和我们的工具的工作词汇表中, 以便在彼此交谈时准确地确定应该构建, 运行或分析哪个程序. go 命令需要能够告诉开发人员具体哪些版本的软件包在特定构建中, 反之亦然. 版本控制可以让我们启用可重复构建, 所以如果我告诉你试用我的程序的最新版本, 我知道你将不仅获得我的代...