zoukankan      html  css  js  c++  java
  • 使用TFS+GIT实现分布式项目管理

    前言

    GIT是近来很流行的一种版本控制系统,是Linux内核之父Linus Torvalds为了管理Linux内核的开发而开发的一种开源的版本控制工具。

    GIT相比传统的版本控制工具最大的优点是实现了分布式项目管理,开发者可以在本地做版本控制,极大的提高了开发人员在项目实施过程中的自由度。

    GIT的分支功能同样强大。使用传统的版本控制工具,对于已经上线的项目的维护和项目新阶段的开发两个过程间的同步是非常让人头痛的事情,而GIT的分支可以很好的解决这个问题。

    为了保证项目的顺利实施,使用GIT可以创建不同的分支,如online分支、production分支、development分支等,项目新阶段的开发在deveopment分支中进行,而对于已经上线的维护性的开发可以在production分支中进行,当production中的维护性的开发完成之后,可以使用分支间的合并(merge)功能,将production分支中所做的修改合并到主分支development中。production分支通过测试部门的测试后merge到online分支,然后即可由运维部门发布。而当项目新阶段的开发完成之后,可以将主开发分支development分支merge到production分支,然后重复前面的流程。在项目实际实施过程中可以视具体情况创建更多分支来满足版本控制要求。

    本文主要讲如何使用TFS+GIT实现分布式项目管理,因此不再赘述理论性的东西。想要对GIT有更多了解,可以参考朱永光的这篇博文:http://www.cnblogs.com/redmoon/archive/2013/11/08/3414289.html

    下载

    http://www.microsoft.com/zh-CN/download/details.aspx?id=42308

    最新版本为Team Foundation Server 2013 Update 2,可选择中文版。

    安装TFS

    如果下载的是镜象文件,可以使用虚拟光驱装载或者使用解压软件解压,然后点击根目录下的tfs_server.exe文件进行安装;

    如果下载的是在线安装工具,下载完成后会自动进入安装界面。

    配置TFS

    安装完成之后,会自动进入TFS的配置,如下图所示:

    如果不需要配置share point,可以选择“基本”,“标准单一服务器”和“高级”选项需要指定share point账户,“高级”选项拥有更高的灵活性。

    本文以“基本”选项为例。点击“启动向导”,会进入一个欢迎界面,然后点击下一步进入SQL Server实例的配置:

    笔者选择使用现有的SQL Server实例:

    点击下一步,然后点配置,等待片刻后配置完成:

    笔者使用的数据库版本是SQL Server 2014 RTM Enterprise,如果数据库版本过低这一步可能会遇到问题,按提示信息升级至相应版本即可。

    至此,服务器端TFS的基本配置完成。接下来要进行项目相关的一些配置,可以在客户端进行,也可以在服务器端进行。

    创建团队项目

    服务器端配置完成之后就要开始创建团队项目了。Visual Studio自带的团队资源管理器是我们进行配置的最方便的工具。必须从版本级别与 TFS 相同的客户端进行连接。 也就是说,您必须从团队资源管理器 2013 连接到 TFS 2013。

    1.打开团队资源管理器,点击右图中的“选择团队项目...”,弹出左图所示界面。

    2.点击“服务器(R)...",点击添加,输入TFS服务器的地址。注意防火墙需要开放8080端口,否则可能连接失败。

     

    3.配置工作区。点击步骤2中的确定,然后选择默认的项目集合”DefaultCollection“点击”连接“,成功连接到TFS后,会看到如下图中step1中所示的界面,提示我们配置工作区。

    如上图所示,配置工作区共有3步,在step2中,笔者将工作区映射到本地磁盘的D:/TFSGit目录下。

    4.创建团队项目。工作区配置完成后就要开始创建团队项目了,团队项目的创建可以在TFS的控制面板(访问地址一般是http://服务器地址:8080/tfs)中进行,也可以在VS的团队资源管理器中进行。这里以VS的团队资源管理器为例。点击团队资源管理器中的“主页”,弹出下图中step1所示的关联菜单:

    在step2点击“下一步”,会询问使用哪种过程模板,选择默认的“Microsoft Visual Studio Scrum 2013.2”即可,再点击一下步,会进入step3:

    这一步版本控制系统一定要选择Git。

    点击“完成”资源管理器会自动创建团队项目。这一过程大约需要几分钟的时间。

    完成之后会询问当前源代码管理插件,如图:

    这里选择“Microsoft Git 提供程序”作为当前源代码管理插件。如果没有自动弹出,可通过工具->选项->源代码管理来设置。

    如果你还没有安装这个插件,可以在 http://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724bdb980c 下载。

    接下来要克隆GIT存储区,这里笔者将之前创建的团队项目Test克隆到本地磁盘D:TFSGitTest目录下:

    克隆完成之后,打开本地磁盘映射区D:/TFSGit可以看到Test文件夹已经变色,说明映射成功:

    如果已经有项目了,可以直接把它复制到Test文件夹下,也可以在Test文件夹下创建新项目。

    然后打开项目,对着解决方案右键->将解决方案添加到源代码管理,再对着解决方案右键->提交(commit)。括号中是英文版TFS的按钮文本,下同。

    点击提交后,这里会让输入一些文字用来描述本次提交所做的更改,如step1所示:

    step1只是提交到本地,这是Git的强大之处,可以在本地做版本控制。如果要立即同步到服务器,点击step2中的“同步”按钮,然后在step3中点击“同步(S)”即会进行自动同步。

    同步进行了两个操作,一是从服务器拉取(pull)最新版本,然后和本地版本进行比较,进行自动合并(merge)后更新(push)到服务器。

    拉取(pull)是从服务器获取最新版本,推送(push)是将本地内容更新到服务器。如果修改的文件有冲突,Git会自动进行合并(merge)。Git能够针对一般性的修改进行自动合并(merge),例如当修改仅仅只是添加或删除一段代码时,而对于同一代码片断服务器版本和本地版本有冲突时Git会提示你手动合并(merge)。虽然其他版本控制工具也都有自动合并功能,但无疑Git做的相当出色。

    创建团队成员

    对于一个团队项目来说,只有一个管理员账户是不够的,还需要创建更多团队成员。

    1.打开TFS的控制面板,访问地址一般是http://服务器地址:8080/tfs

    2.点击管理,在项目集合"DefaultCollection"下选择我们要管理的团队项目,然后点击添加->添加Windows用户或组,如图所示:

    假设我们要添加一个名为Jerry的用户,但是TFS服务器无法识别Jerry是谁,因此,在添加之前,我们要确保Jerry具有访问服务器的权限。

    为此,我们可以在控制面板->用户帐户中添加,添加完成之后,再点击“检查名称”就能正确识别了,如图:

    3.点击“保存更改”,Jerry即添加成功:

    创建分支

    分支是Git的特色之一,分支的创建可以在团队资源管理器中进行。在团队资源管理器的主页,点击默认分支master右边的向下箭头,选择“新建分支”,如图step1:

    笔者新建了一个production分支,注意step1完成之后只是在本地创建了分支,右键“发布分支”才同步到服务器。

    分支间的合并和切换

    如上图将主分支master合并到production分支中。Git的分支切换非常方便,点击向下的小箭头即可随意切换。

    笔者以前在使用VSS的时候,要切回旧版本只能新建一个工作区,然后根据打过的某一Label标签从服务器获取源代码,要回到主开发分支上,还得去另外一个工作区,打开另外一个解决方案,麻烦程度简直不可想象。

    删除团队项目

    团队项目的删除无法在团队资源管理器和TFS控制面板中进行,只能使用TFS自带的管理工具“Team Foundation Server管理控制台”,删除团队项目的操作如图所示:

    结语

    Git作为一种版本控制系统,首先,在理念上就领先一般的版本控制工具。其次Git的许多特性都很人性化,便于操作,能够提高团队工作效率。无论是大型项目,还是中小型项目,Git都能胜任。

    ——本文版权属作者和博客园所有,如果转载请注明出处。

  • 相关阅读:
    BZOJ2456: mode 众数卡空间
    BZOJ4128: Matrix 矩阵BSGS
    [SDOI2011]计算器 BSGS
    前台中文搜索到后台乱码
    批量删除实现js+springmvc
    基于Jquery+Ajax+Json实现分页显示
    分页条的制作
    input text中不能显示空格后的内容
    mysql存入中文乱码问题
    WEBROOT根目录 <%=request.getContextPath()%>
  • 原文地址:https://www.cnblogs.com/choon/p/3892802.html
Copyright © 2011-2022 走看看