TFS源代码管理

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:

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

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

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

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

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

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

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

3、如何与服务器同步

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

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

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

4、如何做Check-In

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

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

填写代码的相关审阅者:

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

5、如何做分支与合并

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

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

考虑下面这种情况:

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

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

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

5.1创建分支操作演示

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

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

5.1合并分支操作演示

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

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

6、什么是上架与下架

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

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

这两个命令主要用于:

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

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

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

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

TFS 源代码管理 - 紫轩丹亭 - 紫轩丹亭

推荐文章

使用TortoiseSVN新建及合并分支图文教程

打开trunks目录,在trunks目录下新建两个文本文件A.java,B.java:   打开A.java输入以下内容:   B.java文件可以随机输入些,本例中主要用于观察后续是否变化。   两个文件编辑完成后使用SVN Commit将更改提交

推荐文章

TotoiseSVN的基本使用方法

TotoiseSVN的基本使用方法 在 项目管理实践教程一、工欲善其事,必先利其器【Basic Tools】中,我已经讲解了怎样安装TortoiseSVN。在上面的讲解中已经讲了怎么使用VisualSVN Server了,今天我要讲的是,TortoiseSVN的简单使用方法。 一、签入源代码到SVN服务器 假如我们使

推荐文章

Eclipse下svn的创建分支/合并/切换使用

最近接项目要求,要在svn主干上创建分支,用分支来进行程序的bug修改,而主干上进行新功能的开发。分支上的bug修改完,发布后,可以合并到主干上。项目程序可以在主干和分支之间进行切换,来实现主干和分支的同时维护。        1.创建分支       &n

推荐文章

必会!Linux文件的管理

1.1 创建一个目录 /data [[email protected] ~]# mkdir /data 1.2 查看目录是否创建成功 《可以找到data即为创建成功》 [[email protected] ~]# ls / bin boot data dev etc home lib li

推荐文章

svn - Cornerstone 代码管理工具常见问题解决!

      好多人在项目开发中都会用到代码管理工具!特别是团队开发合作!能更有效的处理代码更新、合并、托管!再也不担心电脑系统损坏导致辛辛苦苦敲出来的亲儿子项目就这么丢啦!爸爸还是蛮伤心的!. 另,如有系统升级更新或者损坏导致无法进入mac系统!固盘打不开!文件怎么办!小照片怎么办?小视频怎么办?哇,好痛苦!赶紧私

推荐文章

nagios 多用户权限管理---特定用户访问特定主机或服务

nagios 多用户权限管理---特定用户访问特定主机或服务 1.nagios安装 ????????????------------ 2.添加用户和密码 htpasswd?/usr/local/nagios/etc/htpasswd.users?eddy 3.修改配置vim?/usr/local/nagios/etc/cgi.cf

推荐文章

使用svn:externals建立SVN文件(夹)链接

在实际开发常常出现这样的情况:同一文件(文件夹)在不同的项目中使用,如果复制多份,维护会变得非常麻烦。此时使用svn:externals可以方便的解决这个问题,svn:externals是用来建立文件(夹)链接,或者叫文件(夹)引用,或者映射什么的….总之作用就是svn上的一个文件,在多处使用,修改后update,即会同步更新。这样管理项目的

推荐文章

欲善其事-利其器(pycharm的安装)

  俗话说的好“磨刀不误砍柴工”,任何一个人如果先要做好一件事,准备工作是非常重要的,正如一个工匠,想要把工作做得更好,就必须先让工具锋利,这样才能"事半功倍",而作为程序员的我们,一款好的IDE更能让我们得心应手,python IDE工具有很多,如:pycharm  、eclipse、vim、sublime Text等等,由于本人也

推荐文章

git/github 代码托管图文教程

现在都流行将代码托管到github,使用版本控制工具git,现在让我们开始一步一步的将我们本地的代码托管到github上去吧 一、 git的使用 1、下载git工具 2、下载好后安装时候注意要使用vim编辑器,其它的下一步就可以了 3、安装好后在你在上传到github上去的文件夹内右键会有两个“Git GUI Here”和“Gi

推荐文章

6月22日

14.4 exportfs命令 exportfs命令 exportfs 命令用来管理当前NFS共享的文件系统列表 exportfs命令常用选项为-a、-r、-u和-v,各选项含义如下:  -a:表示全部挂载或者全部卸载  -r:表示重新挂载  -u:表示卸载某一个目录  -v:表示显

推荐文章

php-fpm的pool php-fpm慢执行日志 open_basedir php-fpm进程管理

一、php-fpm的pool (配置多个池子多个隔离站点) #cd /usr/local/php-fpm/etc/ #vim php-fpm.conf //在配置文件中增加配置第二个站点aming.com,配置文件中的[www]和[aming.com]相当于是两个不同的池子 #/usr/local/php-fpm/sbin

推荐文章

vim 窗口管理

一、切分窗口 1. 水平切分          命令::sp file       快捷键:<Ctrl-W> + S  2. 垂直切分    命令: :vsp file    快捷键:<Ctrl-W>

推荐文章

LINUX中常用操作命令

LINUX中常用操作命令 引用:http://www.daniubiji.cn/archives/25 Linux简介及Ubuntu安装 常见指令 系统管理命令 打包压缩相关命令 关机/重启机器 Linux管道

推荐文章

【版本管理】SVN使用问题小结

无法加入版本管理的文件 从分支代码合并到主干时,遇到新添加的文件夹里的文件没被纳入到svn管理,试了若干种方法无果: find ./ -name “.svn” | xargs rm -Rf svn add * –force 最终解决方案: 拷贝出文件,将之从原版本管理库中删除,再重新拖进来,Ad

推荐文章

【SVN】Eclipse中使用Svn上传和下载代码

一、前言       SVN这个版本管理工具真是非常的强大,无论什么样的语言都可以使用,都提供版本管理。以前小编使用C#,使用vs的时候就使用svn。现在学习了java,还是使用svn,可以说是轻车熟路,下面小编就像大家介绍一下如何进行代码的上传和下载。 二、上传 &

推荐文章

SVN基础知识回顾(一)

SVN的使用 一,SVN服务器的搭建     主要是安装服务器端和客户端:VisualSVN Server和TortoiseSVN。个人认为最好用VisualSVN server 服务端和 TortoiseSVN客户端搭配使用。 二,SVN常用命令 查看修改的文件记录 svn cat -- 显