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. Ajax & JSONP 原理

    Ajax & JSONP 原理 AJAX不是JavaScript的规范,它只是一个哥们"发明"的缩写:Asynchronous JavaScript and XML,意思就 ...

  2. JS Object Deep Copy & 深拷贝

    JS Object Deep Copy & 深拷贝 针对深度拷贝,需要使用其他方法 JSON.parse(JSON.stringify(obj));,因为 Object.assign() 拷贝 ...

  3. The Weekly Web Dev Challenge: Emoji Ratings

    The Weekly Web Dev Challenge: Emoji Ratings /* DESCRIPTION: You job is to enable users to give a rat ...

  4. Mila Fletcher:日常理财应注意的五点

    米拉·弗莱彻于2007年毕业于耶鲁大学,她是一名真正意义上的法学博士,在校期间获得了马歇尔奖学金,毕业后曾在美国多家知名律师事务所任职,目前就职于星盟全球投资公司,专注于帮助公司和客户提供法务咨询,他 ...

  5. NGK内存将为全球投资者创造新的财富增长机会

    2020年,随着BTC的持续上涨带动了整个区块链市场的持续加温,同时金融市场也对金融体制做出了改变,关于金融和区块链的结合越来越被人们所认可,在此基础上,DeFi行业借此迎来了快速发展,据不完全统计, ...

  6. vue最好的ssr服务器渲染框架

    vue和angular js.react三大框架非常好用,现在大部分人都使用了这三大框架进行开发. 但是vue这些框架到目前位置,大部分还是用来做管理后台,用来做移动端.而官网网站却很少用他们来开发. ...

  7. 03.Jupyter Notebook高级-魔法命令

    %run %run C:\Users\User\Desktop\hello.py hello world %timeit %timeit L = [i for i in range(1000)] 29 ...

  8. 19_MySQL表的内连接

    本节所涉及的SQL语句: -- 表连接查询 -- 查询每名员工(员工名字,编号)的部门信息(部门编号,部门名称) SELECT e.empno,e.ename,d.dname FROM t_emp e ...

  9. 07_MySQL修改数据库的表结构

    修改数据库的表结构

  10. 1102 Invert a Binary Tree——PAT甲级真题

    1102 Invert a Binary Tree The following is from Max Howell @twitter: Google: 90% of our engineers us ...