1. 什么是 Azure Repos

Azure Repos 是一组版本控制工具,可用于管理代码。无论您的软件项目是大型项目还是小型项目,都应尽快使用版本控制。

版本控制系统是可帮助您跟踪随时间变化对代码所做的更改的软件。在编辑代码时,您告诉版本控制系统对文件进行快照。版本控制系统会永久保存该快照,以便以后需要时可以重新调用它。使用版本控制来保存您的工作并协调整个团队中的代码更改。

即使您只是一个开发人员,版本控制也可以帮助您在修复错误和开发新功能时保持井井有条。版本控制保留了您的开发历史,因此您可以轻松查看甚至回滚到任何版本的代码。

Azure Repos提供两种类型的版本控制:

  • Git:分布式版本控制
  • Team Foundation版本控制(TFVC):集中式版本控制

上面是官方文档的内容。虽然给出了两个选项,但现在大部分人都对 Git 比较熟悉,我也假设读者对 Git 有一定了解而无需多做解释。

2. 创建项目

在上一篇文章里我已经创建了一个项目并且选择了 Git 作为版本控制方式,在 Azure Devops 左边菜单选中 “Files” 进入文件页面,首先看到的就是上图这样的画面。可以看到除了刚创建的存储库,还可以添加新的存储库或导入其它存储库。这篇文章我将配合最新版本的 Visual Studio 16.9 从头开始创建项目并介绍 Azure Repos 的基本功能。

因为现有的视频和教程几乎都是围绕 Azure 和 Asp.net 讲解 Azure Repos 和 Pipelines,所以我特地选择 WPF 应用来实现同样的功能。

首先复制下面这个链接,然后打开 Visual Studio,随便创建一个 WPF .Net Framework 项目。

创建项目后在 Visual Studio 右下角找到”添加到源代码管理器“按钮,选择”Git“。

在弹出的创建Git存储库对话框选择”现有远程“,在 Remote URL 中粘贴刚刚复制的链接。点击创建并推送。

完成后,Visual Studio 右下角应该是这个样子,代表现在是 wpf 存储库的 master 分支。

刷新 Files 页面,可以看到刚刚创建的项目已经上传到 master 分支了。

3. 使用策略保护分支

创建好分支后,代码就已经在团队里共享。通常来说团队中的人都需要修改代码,但将代码提交到 master 分之前需要先通过 CodeReview。接下来将介绍如何在 Azure Repos 中通过 Branch Policies(分治策略)保护代码安全性。

在左侧菜单中选中 Branches,进入 Branches 页面后可以看到刚刚创建的 master 分支。点击右侧的”More… “按钮,然后选择”Brance policies“进入 master 分支的分支策略页面。

如下图所示,在 Branch Policies,打开”Require a minimum number of reviewers“选项,将”Minimum number of reviewers“这是为 1,打开”When new changes are pushed:“并选中”Reset all code reviewer votes “。

这样设置完以后,master 分支就不能删除,并且只能通过 Pull Request 修改;最少需要一个 Code reviewer;PR 每次发生更改都重置代码审阅者的投票。

下面还可以选中”Check for linked work items“,避免无缘无故的代码提交。

”Build Validation“涉及到 Pipelines 的内容,下一篇再解释。

最后添加一些 Code reviewer,Optional 标识可选的,即如果有多个 Code reviewer,只需要其中一个通过就可以签入到 master 分支。最好取消”Allow requestors to approve their own changes“。

4. 通过 Pull Request 修改代码

假设项目里有一个”添加单元测试“的 PBI 及它的 Task,现在我需要添加单元测试并修改一些代码后提交到 master 分支。但之前修改了分支策略后就不可以直接修改代码,而需要通过 Pull Request。

首先我需要新建分支,然后随便更新些代码。然后在 Visual Studio 右下角点击这个按钮。

在 ”Git 更改“ 页面输入提交的消息,并且输入 #1 #2,关联 ID 号为 1 和 2 的工作项。然后选中”全部提交并推送“。

然后回到 Azure Devops,在左侧菜单选中 Pull requests,在 Pull requests 页面可以看到系统贴心地提示我要不要创建一个 Pull request,从了它,点击”Create a pull request“。

在创建 Pull request 的页面可以看到这个 PR 有 1 个提交并修改了 9 个文件,系统已经贴心帮我填好 Title,并关联了两个工作项。点击”Create“创建完成 Pull request 的创建。

顺便一提,如果标题有”[WIP]“,右下角的按钮默认选中”创建为草稿“。

Pull request 创建后,在 PR 的详细页面可以看到它的内容、是否冲突、关联的工作项、历史记录等。这时候只需要等待一个 code reviewer 审核通过,通过后右上角的蓝色按钮会变成”Complete“,点击即可完成这个 PR 并将代码合并到 master 分支。

也可以点击右上角的”Set auto-complete“按钮,设置为当审核通过后马上自动完成。可以选中”Complete associated work items after merging“,这样 Pull request 完成后管理的 work item (在这里只有 Task 会自动完成,PBI 还是需要人手操作)也会被自动完成。

这时候 reviewer 会收到通知要做 review,然后他就可以来看看这个 Pull request 做了些什么,没问题的话他就可以 Approve 这个 Pull request。

5. 最后

上面就是 Azure Repos 的基本使用方式。对属性 Github 的开发者来说可能很容易就能上手。更多的使用方式请参考微软提供的文档:

Azure Repos Documentation

[Azure Devops] 使用 Azure Repos 管理代码的更多相关文章

  1. Azure DevOps Pipelines执行RobotFramework自动化代码

    一.Azure DevOps介绍 1.什么是 Azure DevOps? Azure DevOps其实是VSTS(Visual Studio Team Service)更名后的名字.而VSTS是TFS ...

  2. Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)

    之前写过一篇博客"探索TFS Git 库文件换行(CRLF)的处理方式",主要是针对TFVC代码库的. 下面这篇文章说明如何在TFS的Git库中处理代码换行的问题. 概述 在Azu ...

  3. [Azure Devops] 使用 Azure Boards 管理工作

    1. 什么是 Azure Boards 通过 Azure Boards 网络服务,团队可以管理其软件项目.它提供了丰富的功能,包括 Scrum 和看板的本地支持.可定制的仪表板和集成报告.这些工具可以 ...

  4. [Azure Devops] 使用 Azure Pipelines 实现 CI

    1. 什么是 Azure Pipelines Azure Pipelines 会自动构建和测试代码项目,以将其提供给其他人.它适用于任何语言或项目类型.Azure Pipelines 结合了持续集成 ...

  5. Azure DevOps to Azure AppServices

    Azure DevOps is a complete solution for software development, from planning to building to deploymen ...

  6. 如何将Azure DevOps中的代码发布到Azure App Service中

    标题:如何将Azure DevOps中的代码发布到Azure App Service中 作者:Lamond Lu 背景 最近做了几个项目一直在用Azure DevOps和Azure App Servi ...

  7. Github和Azure DevOps的代码同步

    [前言]Github和Azure DevOps都提供了Git代码库功能,那么有没有办法将两边的代码库进行同步呢,答案是肯定的.这里的操作我都是用Azure DevOps的Pipelines功能来完成的 ...

  8. Azure DevOps 介绍

    伴随着敏捷的遍地开花,如今各个开发团队越来越希望可以实现敏捷在自己团队内的落地,但是往往单纯的依赖人力难以实现敏捷的各个环节的管理, 大家开始渐渐的意识到,为了按时交付软件产品和服务,开发和运营工作必 ...

  9. Azure DevOps Server:Git权限设置

    Azure DevOps Server 权限概述 在Azure DevOps Server (之前名称为TFS)中,权限是一个比较复杂的概念.从权限层级上来说,包括服务器级别.团队项目集合级别.团队项 ...

随机推荐

  1. React Native for Windows + macOS

    React Native for Windows + macOS React Native 0.63 https://aka.ms/ReactNative https://microsoft.gith ...

  2. Headless Chrome Node API

    puppeteer Headless Chrome Node API https://github.com/GoogleChrome/puppeteer https://pptr.dev/ PWA h ...

  3. SVG animation(text, background)

    SVG animation(text, background) demo https://www.happyelements.com/ LICEcap bug Giphy 低帧率 gif https: ...

  4. Stack Overflow & Segment Fault

    Stack Overflow & Segment Fault https://stackoverflow.com/ https://stackoverflow.com/users/593446 ...

  5. 200万枚SPC空投来袭,这样的薅羊毛活动你确定不参加吗?

    在过去的2020年,币圈真的是很火爆,很多人在参与数字货币交易或DeFi挖矿中赚到了大钱.但是转眼到了2021年,DeFi进入了下半场,区块链市场也进入了新的阶段,那么区块链的下一个爆点是什么呢?很多 ...

  6. 翻译:《实用的Python编程》01_07_Functions

    目录 | 上一节 (1.6 文件) | 下一节 (2.0 处理数据) 1.7 函数 随着程序开始变大,我们会想要有条理地组织这些程序.本节简要介绍函数.库模块以及带有异常的错误处理. 自定义函数 对你 ...

  7. C++使用libcurl进行http通讯

    借着curl 7.75.0版本更新, 最近又下载下来玩了玩, 在此做个简单记录 1.环境搭建 首先是libcurl动态库, 自己下载源码编译的话如果要使用https协议还要下载OpenSSL和libs ...

  8. winform导出excel

    public void AllDataSetToExcel(DataSet ds) { string saveFileName = ""; bool fileSaved = fal ...

  9. webpack理解

    打包工具 可以将多个静态文件打包成一个静态文件例如将1.js.2.js.3.css打包成h.js一个静态文件 这样做的好处是:可以减少页面的请求次数 以往是请求多个静态页面,使用webpack后会减少 ...

  10. docker数据卷的操作

    一般情况下会比较频繁的修改容器内部的文件 频繁docker cp 不太方便 使用数据卷可以将宿机的某个目录映射至容器的目录 修改会方便点 1.创建数据卷 docker volume create 数据 ...