TFS代码签入指导
1. 如果文件没有被放入到TFS中, 那么它是不存在的.
这一点是最好被理解的, 如果你的代码没有被签入到代码管理中,那么就不可能被团队的其他人获取的得到. 具体如何将文件纳入到TFS中请参考 Placing Files under Version Control
TFS的命名,约定跟限制请参考: Naming Syntax, Conventions, and Limitations
2. 尽早尽快提交, 但是别分裂提交.(Commit early, commit often and don’t spare the horses)
尽早尽快提交的好处是,减少你跟其人代码冲突的风险,合并的恶梦是随时间持续增长的. 试想一下,你迁出一个工程修改半个月后再签入,你要签入的代码跟代码库中已经大不相同了, 那么这个合并操作是否会让你抓狂呢.
每个提交要求当后续发生回滚时都能到达一个正确的位置. 智者千虑必有一失,如果你将事情搞砸了, 最后的保障是我们可以回滚到最近的一次变化. 但是如果你上次提交是残缺的,那么是将事情彻底搞砸了.
能做到当前这一点,还会带来一些额外的好处,就是它会迫使你分离出独立的工作单元, 而独立的工作单元是可以单独可执行的,也就迫使你更清楚的划分自己开发的功能模块.
3. 提交前检查的提交的内容, 必要的时候时候好代码比较工具.
点击Check In按钮是非常容易的, 这种便捷性可能会导致不相干的(或者原本不想签入的)文件被一同签入到了一个ChangeSet中. 设想一下,你修改bug的过程中临时修改了一下config文件中的连接字符串,最终被一同提交到了TFS中, 另一个人会在下一次获取时会获取到你临时设定的config文件. 解决这个问题的办法是简单的: 在签入代码前一定要记得看一下提交内容是否是你预期的(什么, 文件太多了看不过来?, 请参看第二步 ).
通常不需要签入的文件有: 二进制文件. 压缩文件. IDE配置文件. 日志文件. 缓存文件. 多媒体文件. 临时文件.
通常需要签入的文件有: 代码文件. XML文件. CSS文件. Sql文件. 文本文件.
4. 提交代码时别忘了留下点踪迹. 但是别写到此一游的废注释.
提交注释的作用是解释为何你要提交当前代码(提交的代码解决了什么问题). 代码写足够好可以不写注释,而签入的时候在你没有找到理由前请一定要写注释.
注释格式上建议是: 首行简短的描述当前更新解决的问题, 如果有bugId或者TaskId一定要记得带上去. 第二行,解释你做了哪些更新. 第三行解释为何要做这样的更新. 第四行,其它你还想说明的信息.
好的注释是非常难拿捏的,因为判别标准在读注释的人手里. 我们能做到的最低标准是不要说废话. 常见的废话注释: 1. 修复bug 2. 更新代码 3. 修正一处异常处理 等等. 更多有意思的注释请参看What is the best comment in source code you have ever encountered?
5. 代码管理工具不是备份工具.
备份工具的目的是容灾, 代码管理工具注重的是代码管理, 当然它的确有一定的备份作用, 但这不是主要功能. 我们更多的是Check-In, Check-Out, Lable, Branch, Merge.
6. 代码管理不限语言. 不管你使用什么语言在进行开发都要纳入代码管理, 包括SQL,Obj-C
代码管理工具想要跟各个开发环境做到良好的配合是非常困难的, 但是TFS做到了这一点. Team Explorer Everywhere for Team Foundation Server工具运行你跨平台使用TFS. 这样就可以方便的管理其他平台的代码了.
Sql数据库版本控制可以使用 Redgate Sql Source Control 来进行源码控制.
7. 没人在乎你的本地配置
VS下常见本地配置文件有.ReSharper.user(Reshaper的配置文件)跟.suo (Solution User Options). 管理员通常会将这些文件忽略掉, 但是请不要手工的添加到代码中, 因为别人并不需要你配置文件, 除非你的目的是团队共享(举例来说:Settings.StyleCop文件是用于规范团队代码的配置文件,这样的文件被大家共享是有意义的).
8. 编译输出不要纳入源码控制, 但是软件发布是.
VS下代码编译出来的文件默认是不会被签入到TFS中的, 如果你配置了T4来输出一些文件,可能就难以幸免了. 通过(under Team -> Team Project Settings -> Source Control… -> Check-in Policy)可以特殊忽略一些文件防止被意外签入.
并不是所有的编译输出都不需要我们维护. 当对外发布一个版本时,避免每次要定位到当时环境再编译生成的麻烦问题, 通常我们会将线上发布的文件也加入TFS源码管理中.
9. 考虑好代码依赖项. 你能断定别人另一台机器上能正常编译么
编写代码时第三方依赖是非常麻烦的问题, 通常我们很难将依赖项完全纳入TFS管理中(比如某组件写日志部分依赖Nlog). 以前我们的做法是要求团队将TFS放入到统一目录层次下, 并将第三方的依赖也一并打包到某目录下. 在这样运作中发现大量的第三方依赖以及起版本管理是非常麻烦的一件事情. 此时Nuget横空出世算是解决了这个问题. 整个团队将自己产生的组件发布到内部的Nuget服务器上, 如果依赖第三方开源类库,那么就直接用Nuget官网来管理就好了.
参考类目:
http://www.troyhunt.com/2011/05/10-commandments-of-good-source-control.html
http://stackoverflow.com/questions/922798/how-to-ignore-files-directories-in-tfshttp://msdn.microsoft.com/library/vstudio/ms245454(v=vs.110).aspx#tfignore
TFS代码签入指导的更多相关文章
- TFS对签入文件忽略设置,解决pdb弹出警告
我们在使用TFS项目老是出现冲突,要么编译的时候 提示PDB被签出这类的大量弹出,很烦人. 在群友的指点下,对签入文件进行限制.对PDB禁止签入以后,整个世界安静了.非常感谢 TFS=>服务器管 ...
- tfs强行签入和删除工作区
作者:为爱痴狂 原文:http://www.cnblogs.com/splyn/archive/2011/10/31/2230213.html 域用户被网络管理员重建,或者其他用户牵出文档,导致的TF ...
- [BI项目记]-搭建代码管理环境之签入代码
此篇主要介绍如何基于TFS环境创建进行BI项目最简单的代码签入和签出工作. 首先介绍BI项目中的SSAS项目.SSAS项目主要包含Cube多维数据集和数据挖掘模型,是在微软BI产品体系中重要的一个组件 ...
- 使用Team Explorer Everywhere (TEE) 2015 SDK获取团队项目的签入策略
TFS的代码签入策略与IDE工具紧密相关,例如Visual Studio中设置的签入策略,只会影响Visual Studio的团队资源管理器:如果需要在Eclipse的TEE中启用签入策略,你还需要在 ...
- TFS签入代码时,自动修改工作项的状态为“已解决”
Visual Studio中有一个很酷的功能,就是签入代码到TFS库时,可以关联相应的工作项,实现代码与工作项(需求.任务.Bug等)的关联,从而实现代码的跟踪. 在关联工作项的过程中,如果工作项具备 ...
- 3. 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (提示:搜索一下Microsoft TFS、GitHub、Trac、Bugzilla、Rationale,Apple XCode),请用一个实际的源代码管理工具来建立源代码仓库,并签入/签出代码。
上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? ---------------答题者:徐潇瑞 (1)Microsoft TFS的优缺点: 优点:是对敏捷,msf,c ...
- vs签入签出--TFS进行源代码管理
工作项是项目管理的基本元素.工作项说明了要做什么事(例如任务),出了什么问题(例如Bug),除此之外,我们还需要将程序一行一行地写出来,TFS的源代码管理控制系统,就能帮助我们管理这一行行的代码,一个 ...
- TFS签入签出规范
TFS签入签出规范1)开发平台的约定a)开发操作系统环境和最终用户使用环境 包含Service Pack版本号开发环境 Windows2008SP1 Windows7用户环境 Windows2008S ...
- [转][TFS] 禁止默认允许多人签出和强制解除签入签出锁
转自:http://blog.xieyc.com/tfs-disable-multiple-check-out-and-force-to-undo-locking/ | 小谢的小站 [TFS] 禁止默 ...
随机推荐
- HTMLayout界面CSSS样式解析笔记
HTMLayout学习笔记 by BBDXF 一.界面篇 学习界面需要有一定的HTML.CSS认知,如果你问为什么,那就当我白说. 由于界面库官方没有给一个完善的User guide,所有的学习都靠自 ...
- redhat--nagios插件--check_traffic.sh
****在被监控主机安装nrpe**** (1)在被监控主机上,增加用户和密码 useradd nagios passwd nagios (2)安装nagios插件 tar zxf nagios-pl ...
- 怎样在 Ubuntu 中修改默认程序
导读 作为一个新手,你需要知道如何在 Ubuntu 中修改任何默认程序,这也是我今天在这篇指南中所要讲的. 对于我来说,安装 VLC 多媒体播放器是安装完 Ubuntu 16.04 该做的事中最先做的 ...
- 链表的倒数第K个节点
题目:输入一个链表,输出该链表中倒数第K个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个结点. package com.edu; class LinkNode{ //定义一 ...
- java web 学习八(HttpServletResponse对象2)
一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,
- Hadoop对文本文件的快速全局排序
一.背景 Hadoop中实现了用于全局排序的InputSampler类和TotalOrderPartitioner类,调用示例是org.apache.hadoop.examples.Sort. 但是当 ...
- 常见设计模式解析和实现(C++)FlyWeight模式
作用:运用共享技术有效地支持大量细粒度的对象 UML结构图: 解析: Flyweight模式在大量使用一些可以被共享的对象的时候使用.比如,在QQ聊天时很多时候你懒得回复又不得不回复,一般会用一些客套 ...
- 精雕细琢 35 套精美的 PSD 图标素材
设计师总是有独特的创意和精雕细琢的精湛技术,让我们值得去欣赏和借鉴,如梦想天空所表达的:非常感谢那些很有才华的设计师分享它们的劳动成果,让更多的人可以使用他们的创意设计.今天,本文与大家分享35套精美 ...
- redis集群的搭建
1.首先下载好软件包 #cd /opt/tzr/ #wget http://redis.googlecode.com/files/redis-2.6.11.tar.gz #mkdir /opt/tzr ...
- 从lighttpd学到的代码技巧
平时写开脚本,很多时候我们都可以不怎样注意效率,但是看c代码的时候,你会发现,才意思自己真的是一个coder啦 1,单位转换 (根据传入的数返回相应的kb,mb,gb等等) 可能我们直觉来想就会这样做 ...