zoukankan      html  css  js  c++  java
  • 抛弃强大的TFS ,借助于BugTracker.NET + Visual Source Safe + SourceLink搭建项目开发环境

    微软公司的Team Foundation Server是个强大的项目管理工具,如果用.NET开发,它应该是首选的项目管理平台。TFS的成本比较高,而且和Visual Studio集成紧密。比如TSF有些功能必需和Visual Studio配合才行,比如新建项目,必须在Visual Studio中完成。TFS必须要用SQL Server作为数据存放平台。这样导致运行TFS必须对微软的这几个产品都要购买许可,费用相当贵。 Team Foundation Sever另一个不好的方面是对硬件的消耗相当高,4G内存跑起来都有些吃力,再和微软的SharePoint组合起来,一般的公司都承受不了这样的成本,且不说软件费用,仅仅是硬件方面都难达到要求。

    言归正转,项目管理一般涉及到源代码版本控制和需求管理。多人团队开发时,用源代码管理可以节省很多代码冲突时的合并时间,如果再能配合一个需求管理工具,把代码中的每一种修改关联到需求记录中去,这样就很完美了。TFS中令我相当着迷的地方就是Changeset变更集可以直接链接到需求记录(Bug或Enhancement)。每个Bug后面都有Link选项,以此作为关联,在以后查找问题原因时带来很多便利。

    没有金刚钻,小米加步枪也可以漂亮的干活,来看我是如何组合这三个工具以搭建项目开发环境。

    源代码管理 安装好Visual Source Safe 2005,这是此软件最后一个版本,简单方便稳定。就是自己独立做项目也经常用它,可以记录每次对代码的变更,在维护阶段会节省大量时间。

    需求管理 选用BugTracker.NET,其它的第三方的免费的或是商用的工具找了很多。主要考虑的方面是简单,硬件消耗低,可维护,稳定。非.NET开发的需求工具一率不用,原因是用.NET开发的系统,自己查找原因和维护起来方便。Ruby,PHP,JSP技术只简单的了解,要是用这些技术写的需求工具出了问题,又要折腾的去学这些技术查找原因。已经30+程序员了,不喜欢折腾,不喜欢玩技术,喜欢用简单的方法把目的达到。

    硬件消耗低,动不动就几百MB的东西,看起来比较吓人,维护起来肯定不容易。最好是开源的系统,以后能写一些扩展或是代码对它进行扩充。最后,要稳定,不能一装上去就报N个错误。需求管理工具一般都是B/S架构的,ASP.NET写的最好,自己以前是ASP.NET程序员出身,可以解决维护难题。能有个Visual Studio AddIn或是C/S的更方便,实在找不到,自己看数据库表结构也可以写一个。鉴于这些原因,最终选BugTracker.NET。

    第三,我还想把代码中的变更直接Link到需求管理工具中。每一个需求,都会对代码进行相应的变更,为了追踪方便,我想代码中的各地方的修改,直接关联到需求工具中。经过搜索,Whole Tomato Software出品的SourceLinks满足我的需求。Whole Tomato Software是大名鼎鼎的Visual Assist X工具的开发商,VC++程序员必备工具之一。

    SourceLinks是免费工具工具,设计原理也比较简单。可以从以下地址获取它:

    http://www.wholetomato.com/products/sourcelinks/default2.asp

    image

    源代码中用固定的格式的字符串标识代码修改的原因,比如case 45192,Source Links会扫描源代码文件,识别此字符串,当点击case 45192时,可以跳到浏览器中类似于这样的地址http://localhost/btnet/edit_bug.aspx?id=45192,查看需求明细内容。另外,还可以做鼠标旋停插件,如上图所示,它显示了case 45192的详细信息。

    image

    为达到此目的,需要对Bug Tracker.NET进行简单的修改,改成自动登陆模式或是改成域用户验证方面,以避免跳转到需求明细时,要求输入用户名和密码。从下载回来的Bug Tracker.NET文件包中,进入www目录,找到default.aspx文件,直接在用户名和密码的控件的地方,输入控件值,默认的用户名和密码均是admin。跳到108行,加入代码on_logon();即可。

    <td class=lbl>User:</td>
    
    	<td><input runat="server" type=text class=txt id="user" value="admin"></td>
    
    	</tr>
    
    
    
    	<tr>
    
    	<td class=lbl>Password:</td>
    
    	<td><input runat="server" type=password class=txt id="pw" value="admin"></td>
    
    	</tr>
     
     
  • 相关阅读:
    Python rindex()方法
    Python rfind()方法
    Python replace()方法
    服务器技术综述(三)
    服务器技术综述(二)
    服务器技术综述(一)
    TensorRT-优化-原理
    TensorRT-安装-使用
    TensorRT 加速性能分析
    GPU加速:宽深度推理
  • 原文地址:https://www.cnblogs.com/JamesLi2015/p/3404817.html
Copyright © 2011-2022 走看看