TFS下的源代码控制

以下主要描述了:

  1. TFS源代码控制系统的基本场景
  2. 如何把一个项目添加到源代码管理中
  3. 如何与服务器同步
  4. 如何做Check-In
  5. 如何做分支与合并
  6. 什么是上架与下架

我们知道工作项是项目管理的基本元素,但是一个项目的成功,光有工作项还是不够的。工作项说明了要做什么事(例如任务),出了什么问题(例如Bug),除此之外,我们还需要将程序一行一行地写出来,TFS的源代码管理控制系统,就能帮助我们管理这一行行的代码,一个个的文件,一次次的修改,直到产品发布。

1、TFS源代码控制系统的基本场景

这里介绍一下,如何在Visual Studio.net中使用源代码控制系统,我们知道Visual Studio IDE可以和Visual Source Safe等多种源代码控制系统集成,所以我们首先需要选择用什么来控制源代码,这可以通过从IDE菜单中选择“工具(Tools)”->“选项(Options)”,在选项对话框中,找到源代码管理(Source Control | Plug-in),然后选择Visual Studio Team Foundation Server:

clip_image002

2、如何把一个项目添加到源代码管理中

首先,我们需要有一个团队项目,下面我们以测试环境中已有的团队项目TFSTest为例进行说明,当我们把一个源代码项目添加到源代码管理系统中时,Visual Studio会为你创建一个工作空间(Workspace)。

一个工作空间是服务器的文件、目录在客户端的映射。当用户对源代码管理中的目标进行增加、编辑、删除、移动、重命名,或者其他操作时,用户的修改会保留在工作空间中,标记为工作空间中的“待定/未提交修改”(Pending Change)。这些修改只有被用户签入(Check In)后,服务器上的文件或目录才会跟着改变。

下面我们演示创建一个新的解决方案和项目,并将其添加到源代码管理中:

在Visual Studio IDE中,创建一个新的项目,选中“添加到源代码管理”(Add to Source Control):

clip_image004

集成环境在后台开始创建项目的框架,然后会提示你,选择将新建项目添加到TFS上的哪个Team Project中,这里,我们选择TFSTest项目,点击确定:

clip_image006

然后,我们打开菜单“视图”->“其他窗口”->“源代码管理资源管理器”:

clip_image008

就可以看到新添加到TFSTest团队项目下的ITRequestFormPrj1了:

clip_image010

项目文件夹前面是一个黄色的+,代表这些都是Pending Change.

如果我们需要把现有的解决方案,或者项目添加到TFS中,那么可以打开这些解决方案或者项目,然后右键点击解决方案,选择“将解决方案添加到源代码管理”:

clip_image012

然后在弹出的窗口中,选择将解决方案添加到那个Team Project中。

现在我们试着编译一下项目(模拟一下验证代码的正确性),然后就将这些Pending Change 签入到TFS中,选择“视图”->“其他窗口”->“挂起的更改”:

clip_image014

就可以看到目前有哪些Pending Change:

clip_image016

然后点击签入按钮,所有被选中的Pending Change文件都会被签入。

下面我们看看,如果向已经加入源代码管理的项目中,添加一个文件,会是什么情况:

  • 首先,项目会被自动Check-Out(签出),在项目前面有一个红色的打钩图标(下面左图)
  • 其次,新增的文件前面有一个黄色的+号,表示这是一个挂起修改的文件(下面右图)

clip_image018clip_image020

先把Class1文件签入,然后我们试着双击打开Class1.cs文件,输入一行注释,我们发现编辑文件后,文件会被自动签出(Check-Out),由于文件被Check-Out,所以项目的状态也更新成Check-Out了:

clip_image022

3、如何与服务器同步

在团队协同工作的环境中,许多人都在修改同一个项目中的代码,你需要把项目中最新的修改下载到本地。如下的操作,可以让你的工作空间和服务器上的最新版本同步:

  • 在解决方案窗口中,选择项目或者整个解决方案,右键点击,选择“获取最新版本”

clip_image024

  • 在源代码资源管理器中,选择一个Team Project,可以将该团队项目的最新版本同步到本地:

clip_image026

如果在上图中,选择一个Team Project下的某个解决方案文件夹,则可以针对某个解决方案获取最新的版本。

在签入你自己的代码前,最好把服务器上最新的版本同步下来,这个过程需要解决可能的版本冲突问题,然后你要构建项目,保证没有问题后,再签入代码。这是为了尽量避免你签入的代码,导致在服务器和其他开发人员的机器上出现构建失败。

4、如何做Check-In

以下三种方法都可以做签入(Check-In)

  • 在解决方案窗口中,右键点击修改后的文件,然后选择签入

clip_image028

  • 在源代码管理窗口中,右键点击修改后的文件,然后选择“签入挂起的修改”

clip_image030

  • 在挂起的更改窗口中,选择要签入的文件后,点击签入按钮:

clip_image032

这种方法可以让我们做快速的签入,默认情况下,所有被修改的文件,都会自动列出,根据需要确定要签入的文件后,可以填写签入的注释,对签入的修改关联对应的工作项:

clip_image034

填写代码的相关审阅者:

clip_image036

查看签入是否已经满足预定的策略:

clip_image038

当用户选择签入后,所有选中的文件,签入说明,以及与此次签入相关联的工作项,都将被存储到数据库中,作为一个新的更改集(Changeset)。一个更改集是文件版本、相关工作项、以及源代码管理元数据(Metadata)组成的一个单独的实体。

如果工作项有相关的流程处理规则,这些规则会修改工作项的状态。例如,一个团队可能会定义如下规则:如果当你签入时管理了工作项,并选择“签入操作”为“解决”,则工作项会从“活动的”变为“解决”:

clip_image040

5、如何做分支与合并

TFS中支持分支的概念,所谓的分支(Branching,就是指把源代码控制系统中的文件和目录复制一份。分支能够保持文件和目录的历史,并且能够把旧的文件上的修改合并到新的文件上去。在新的分支上的修改,和原来的分支(一般称为主分支)没有任何关系。

合并(Merging是指把不同分支中的文件(文件、目录、团队项目)合并到一起。在合并操作中,一个分支是源分支,另一个是目的分支。源分支中包括了用户想要合并的文件。

考虑下面这种情况:

clip_image042

在时间的要求下,我们可能要先发布一个版本,那么我们可以建立一个Release1的分支,然后主分支代码和分支代码同时继续开发。在某个时刻,可以将两个分支合并。

下面是分支应用的另一种场景:

clip_image044

在功能细分的要求下,例如Visual Studio就分成好多个版本:Express 版本、标准版本、企业版、架构师版等等。他们拥有共同的基础功能,在这部分功能开发完成后,可以通过分支来实现不同版本对应增值功能的开发,例如从主代码中分支出功能A、功能B

也有可能这些增值功能不是必须的,如果可以实现,我们就合并到主代码中,如果不能实现,则取消合并。

通过上述的场景,可以看到分支为代码管理提供了更佳的灵活性。

5.1创建分支操作演示

在Visual Studio中进行分支操作,十分方便,首先我们创建一个分支:

  • 在源代码管理器窗口中,选中一个要对其进行分支的项目,例如下图的ITRequestFormPrj1,然后右键点击选择“分支”:

clip_image046

  • 在这里,可以选择分支的名称、对主分支的最新版本还是指定版本进行分支,是否创建新分支的本地副本(也就是将新分支从TFS服务器上下载到本地工作区中)

clip_image048

  • 点击确定按钮后,开始创建分支的操作,创建成功后,我们在源代码管理器窗口中,可以看到主分支和新分支之间有一个双向箭头的图标表示了它们的关系:

clip_image050

5.1合并分支操作演示

我们先试着在新的分支中修改一下代码,然后签入修改,接下来我们演示合并分支的操作:

  • 在源代码管理器窗口中,选择一个分支,将其合并到主分支,右键点击后,选择“合并”:

clip_image052

  • 在源代码管理合并向导中,选中的分支作为源分支,目标分支会自动被识别出来:

clip_image054

  • 在上图中,点击下一步按钮,向导会提示你,选择源分支的哪个版本进行合并:

clip_image056

  • 确定以后,向导提示你可能需要解决冲突:

clip_image058

点击完成按钮,如果合并的分支之间有冲突,则会提示你要先解决冲突后,才能合并:

clip_image060

点击解决按钮,提示Form1.cs文件存在冲突:

clip_image062

点击比较按钮,在比较窗口中,会显示两个分支中,同一个文件的差异:

clip_image064

在上一个窗口中,选择“在合并工具中合并修改”,并点击确定按钮:

clip_image066

后台会为你启动合并工具,需要稍等片刻:

clip_image068

在合并工具中,可以选择一边的更改加以应用,如果有多个不一致的地方,则可以通过“上一个更改”和“下一个更改”进行方便的导航:

clip_image070

选择一个更改的内容后,你还可以在最下面的编辑窗口中,进行最后的修改,然后点击确定即可:

clip_image072

提示冲突已经解决,是否保存文件,点击是:

clip_image074

当所有冲突都已经解决后,点击关闭,退出冲突处理,完成合并操作:

clip_image076

这个时候,我们打开合并的目标分支,因为修改的内容合并到了目标分支,目标分支的对应文件处于挂起的更改“合并,编辑”,需要对其进行签入操作,才能将最新的内容提交到TFS服务器上:

clip_image078

6、什么是上架与下架

上架(Shelve)和下架(UnShelve命令听起来不容易理解。我们不妨相像一下,你正在办公桌上伏案画图,假设是用工笔画红楼梦群芳夜宴图,大大小小的美女草图铺满了桌面,这是你接到命令要做另外一件事:泼墨画,而你只有一个办公桌,万一泼墨到美女们怎么办?于是你就把目前的所有图纸卷起来,放到书架上。这就相当于上架。

接下来你开始泼墨画的工作。尽情挥洒之后,清理桌面,从书架上把刚才收起的图纸都拿下来,铺开,继续你的群芳夜宴图。这就相当于下架。

这两个命令主要用于:

  • 保存目前的工作,切换到另一个任务
  • 其他人开始代码复审(你将修改上架了,别人可以在自己的环境中,把你上架的内容下架,然后做复审)
  • 集成别人的修改(两人的修改互相依赖,这是可以通过上架/下架命令把修改集成起来)

这位多人协作提供一种便利:不需要每次Check-In,然后别人Check-Out,而是多次上架下架后,最后来一次Check-In即可。

上架的操作十分类似于签入操作,在源代码管理器中,右键点击要上架的文件,选择“搁置挂起的更改”即可:

clip_image080

所有的参数都与签入操作类似,不同的是,修改不会做冲突检查,也不会影响源代码(即没有真正被Check-In,这可以在上架操作结束后,验证文件前面还有红色打钩标志来确认),而是暂时存储在TFS服务器上,以便其他人做下架处理:

clip_image082

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PAT - 甲级1004】Counting Leaves (30分) (dfs,递归)

题干&#xff1a; A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file contains one test case. Each case starts with a line containing 0<N<100,…

地平线:面向规模化量产的智能驾驶系统和软件开发

导读 7月27日&#xff0c;地平线在智东西公开课开设的「地平线自动驾驶技术专场」第3讲顺利完结&#xff0c;地平线智能驾驶应用软件部负责人宋巍围绕 《面向规模化量产的智能驾驶系统和软件开发》这一主题进行了直播讲解。本次分享主要分为以下4个部分&#xff1a; 1、智能驾驶…

【转】TFS上分支和标签的用法

什么时候用分支: 例如为某个客户定制的专用版本,和主干的特性有很大差别.不具通用性的需求. 大的版本修改,例如2.0 到3.0 加了很多特性,但2.0 还有维护.改bug 什么时候用标签: 小版本的发布, 如2.1.1到2.1.2. 分支的优点: 清晰,容易操作,程序员只要get latest/checkin latest就…

【PAT - 甲级1034】Head of a Gang (30分)(并查集)

题干&#xff1a; One way that the police finds the head of a gang is to check peoples phone calls. If there is a phone call between A and B, we say that A and B is related. The weight of a relation is defined to be the total time length of all the phone c…

重读经典(CLIP上):《Learning Transferable Visual Models From Natural Language Supervision》

CLIP 论文逐段精读【论文精读】这一次朱毅博士给大家精读的论文是 CLIP&#xff0c;来自于 OpenAI&#xff0c;是图像文本多模态领域一个里程碑式的工作。 CLIP 的影响力可见一斑&#xff0c;如果按照沐神之前讲的如何判断一个工作的价值来说&#xff0c;CLIP 应该就是 1001001…

TFS准备(一)

一、TFS概念&#xff1a; TFS全称Team FoundationServer&#xff0c;是应用程序生命周期管理的服务端&#xff0c;功能包括如图功能&#xff1a;源代码管理&#xff0c;版本控制&#xff0c;团队开发协作&#xff0c;统一集成&#xff0c;测试管理等。 二、TFS安装要求&#…

【PAT - 甲级1094】The Largest Generation (25分)(dfs建树)

题干&#xff1a; A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level belong to the same generation. Your task is to find the generation with the largest population. Input Specification: Each input file contai…

重读经典(CLIP下):《Learning Transferable Visual Models From Natural Language Supervision》

上文链接&#xff1a;重读经典&#xff08;CLIP上&#xff09;&#xff1a;《Learning Transferable Visual Models From Natural Language Supervision》 5. 实验 现在我们已经知道 CLIP 是如何进行预训练的以及作者为什么选用对比学习来预训练 CLIP&#xff0c;接下来我们就…

TFS创建团队项目(三)

打开Visual Studio 2013&#xff0c;视图-团队资源管理器-连接图标&#xff08;插头图标&#xff09; 当前是没有TFS服务器&#xff0c;点击服务器按钮 添加&#xff0c;并在URL地址栏里输入装有TFS的服务器IP地址&#xff08;配置完TFS后有这个URL&#xff1a;http://tfs-serv…

【PAT - 甲级1007】Maximum Subsequence Sum (25分)(前缀和)

题干&#xff1a; Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to be { N​i​​, N​i1​​, ..., N​j​​ } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the l…

详解4D毫米波雷达数据集(VOD)Multi-class Road User Detection with 3+1D Radar in the View-of-Delft Dataset

Multi-class Road User Detection with 31D Radar in the View-of-Delft Dataset本文介绍一个新的自动驾驶数据集&#xff1a;VOD&#xff0c;论文收录于 ICRA2022。下一代毫米波雷达除了提供距离、方位和多普勒速度外&#xff0c;还会提供高度信息。 在本文中&#xff0c;作者…

自动驾驶之心:毫米波雷达-视觉融合感知方法(前融合/特征级融合/数据级融合)

毫米波雷达-视觉融合感知方法&#xff08;前融合/特征级融合/数据级融合&#xff09;分享一个自动驾驶之心的报告&#xff1a;毫米波雷达与视觉融合目标检测。 作者主页为&#xff1a;https://www.zhihu.com/people/nacayu 文章目录1. 毫米波雷达与相机融合检测背景2. 主流融合…

【PAT - 甲级1095】Cars on Campus (30分)(模拟)

题干&#xff1a; Zhejiang University has 8 campuses and a lot of gates. From each gate we can collect the in/out times and the plate numbers of the cars crossing the gate. Now with all the information available, you are supposed to tell, at any specific t…

TFS中的迭代(五)

从团队资源管理器中打开迭代选项。 TFS在新建完团队项目后会自动为本团队项目新建迭代子项&#xff0c;包含发布和冲刺。第一级为团队项目TestProject&#xff0c;第二层为发布&#xff0c;第三层为冲刺&#xff0c;这样的层次一共可以建14层。 这些选项可以编辑&#xff0c;添…

2022百度ApolloDay技术开放日:文心大模型在自动驾驶感知中的落地应用

2数据处理大模型技术是自动驾驶行业近年的热议趋势&#xff0c;但能否落地应用、能否用好是关键难题。百度自动驾驶依托文心大模型特色优势&#xff0c;率先实现技术应用突破。百度自动驾驶技术专家王井东表示&#xff1a;文心大模型-图文弱监督预训练模型&#xff0c;背靠文心…

【PAT - 甲级1155】Heap Paths (30分)(栈,dfs,二叉树)

题干&#xff1a; In computer science, a heap is a specialized tree-based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either greater than or equal to (in a max heap) or less than or equal to…

TFS中的工作项(六)

TFS中的工作项 在VS中打开团队资源管理器 工作项有功能&#xff0c;产品积压工作项&#xff0c;任务&#xff0c;测试用例&#xff0c;Bug&#xff0c;障碍&#xff0c;它们之间的关系是&#xff1a;一个产品或应用&#xff0c;有一系列功能&#xff0c;功能最大&#xff0c;可…

单目3D物体检测模型(CaDDN): Categorical Depth Distribution Network for Monocular 3D Object Detection

本文介绍一篇单目3D物体检测模型&#xff1a;CaDDN&#xff0c;论文收录于 CVPR2021。 单目3D物体检测的主要挑战在于准确预测物体深度&#xff0c;由于缺乏直接的距离测量&#xff0c;因此必须根据物体和场景线索来推断物体深度。过去许多方法试图直接估计深度来辅助3D检测&am…

【PAT - 甲级1003】Emergency (25分)(Dijkstra,最短路条数,双权值最短路)

题干&#xff1a; As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each city and the length of each road between any pair of…

抠图、换背景、正装图证件照制作方法

本篇灵感是最近又要使用别的底色的正装照的图片。上学的时候&#xff0c;要求证件照的底色是蓝底、党员档案里要求图片的底色是红底、 将来上班的证件照要求是白底&#xff0c;并且无论是考研还是找工作都是制作简历的时候&#xff0c;根据简历的样板不同需要更换不同的底色。 …