VisualStudio 如何快速添加一个 Git Tag 推送

在 VisualStudio 的团队管理功能,提供了方便的添加 Tag 的方法,能够新建一个 Tag 添加 Tag 信息,同时推送某个特定的 Tag 到服务器。配合推 Tag 打包 NuGet 的方法,将可让整套工具用起来特别爽,彻底本地化打 Tag 推送就完成了 NuGet 服务器打包推送html

进入团队管理界面,我用的英文版的,可是按钮在中文版也没有变化。个人 VisualStudio 是 2019 的缓存

点击 Tags 进入标记界面服务器

此时能够经过点击 新建Tag按钮 新建一个 Tag 给他版本号和信息,请看下图工具

点击建立按钮就能够完成了建立,上面代码只有 Tag 号是必须的,而信息是没必要须的。固然有信息能够协助小伙伴更好了解这个 Tag 对应的功能post

此时就能够看到刚才新建的 Tag 了,右击这个新建的 Tag 号就能够找到推送按钮,点击推送按钮就能够将 Tag 推送到服务器了测试

熟悉这个方法能够快速给代码添加一个 Tag 号日志

配合 dotnet 配合 Gitlab 作自动推 Tag 时打包 NuGet 包 能够特别方便打 Tag 打包推送htm

为何须要推送 Tag 才能打包?缘由是为了解决回退到某个版本发现有一个坑,这个坑是由于某个依赖库的版本问题,此时我指望最小改动,我虽然能拿到这个库的代码,可是我很难知道我这个版本安装的 NuGet 库对应依赖库的哪一个 commit 的代码blog

我以前每次须要追踪某个 NuGet 包对应的依赖库的源代码的版本的时候,都须要进入打包服务器,查看打包日志,在这样很坑玩了好久,公司的配置管理员干掉了服务器,删除了日志。而我接到一个很古老的项目须要修复某个坑,此时这个项目引用了一个底层库的古老版本,此时我不能升级底层库,应该底层库的改动量太大了。可是我又很难定位我如今项目引用的 NuGet 库对应的底层库的哪一个 commit 代码。后面只能经过二分的方法,用了几天的开发才完成开发

因此看到了我上面的坑,小伙伴大概也就能知道为何我指望将 Tag 和 NuGet 包关联了

在我如今团队的约定里面,只要添加了 alpha 也就是预览版,就能够随意推送测试的 Tag 让服务器帮你打包 NuGet 包,而后在其余的项目安装。为何会鼓励这样作?缘由是有小伙伴说个人某个项目的开发依赖某个库,可是假设这个库必定是合并到主分支以后才能打出 Tag 打包,也就是小伙伴在某个项目的代码将一直不能推送。同时小伙伴也不能在 csproj 里面引用某个私有的版本,由于私有的版本只有小伙伴本身能构建经过,其余小伙伴可构建不经过

假设小 A 须要开发项目 F 而这个项目以来库 L 的更改
而库 L 的更改若是没有合并到 master 分支,就不容许推送 Tag 打包
此时小 A 若是推送了代码,这个代码引用了尚未被发布的 L 库的代码,那么其余小伙伴将没法构建经过
此时小 A 若是推送了代码,这个代码引用了小 A 本地生成的 NuGet 库,那么其余小伙伴将找不到这个 NuGet 库,没法构建经过
若是小 A 不推送代码,只是写了一个 commit 可是这个 commit 包含了 L 库的代码,可是没有在 csproj 里面升级 L 库版本,那么在回滚代码的时候,进入到这个 commit 将构建失败
若是小 A 在 commit 里面升级到他本地生成的 NuGet 库,那么回滚代码的时候,由于公共服务器不存在小 A 的本地的 NuGet 库,依然会构建失败

此时有一个叫头像的小伙伴出了一个馊主意,小 A 虽然 L 库代码没有被合并,可是能够知道这个 L 库被合并以后分配的版本号,此时就在 csproj 里面更新到这个版本,而后经过本地打包的方法引用和推送。可是这个方法存在如下问题

  • 小伙伴本地打包第一次,发现翻车了,想要第二次打包,可是此时的版本号就重叠了,须要通过黑科技删除 NuGet 缓存从新构建,此时的效率特别低
  • 小伙伴在此次 commit 写的代码是他认为发布的时候将会添加的公开方法,可是实际上最后发布的时候更改了公开方法,此时回滚到这个 commit 虽然能下载到 NuGet 库,可是发现 L 库的公开方法不匹配,构建失败

这就是为何选用推送 Tag 打包的缘由,容许小伙伴本身选择预览版的版本推送,自动打包,这样就能够在项目中使用此Tag 打出的预览版的代码。此时的 commit 其余小伙伴也能构建,回滚代码的时候也能够在公共服务器找到 NuGet 包或切换到对应版本的源代码

相关文章
相关标签/搜索