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] 禁止默 ...
随机推荐
- Linux下利用ioctl函数获取网卡信息
linux下的ioctl函数原型如下: #include <sys/ioctl.h> int ioctl(int handle, int cmd, [int *argc, int argv ...
- 硬盘结构介绍--mbr及分区
硬盘刚买来使用时需要经过分区然后格式化才能够使用,硬盘经过分区后,分区软件便会写一个主引导扇区,这个扇区位于硬盘的 0 磁道 0 柱面第1扇区(即0区)(注意:该扇区为隐含扇区,0道0面的全部扇区均为 ...
- Mysql 多表联合查询效率分析及优化
1. 多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如: SELECT * FROM table1 CROSS JO ...
- Delphi 利用TComm组件 Spcomm 实现串行通信
Delphi 利用TComm组件 Spcomm 实现串行通信 摘要:利用Delphi开发工业控制系统软件成为越来越多的开发人员的选择,而串口通信是这个过程中必须解决的问题之一.本文在对几种常用串口通信 ...
- 色谱峰的类型BB,BV,VB等都是什么意思
B(Baseline):峰在基线处开始或结束V(Valley):峰在谷点线处开始或结束P(Peak): 峰开始或结束与基线贯穿点BB就代表标准的峰:从基线开始出峰,最后峰到基线结束(from base ...
- 两段简单的JS代码防止SQL注入
1.URL地址防注入: //过滤URL非法SQL字符var sUrl=location.search.toLowerCase();var sQuery=sUrl.substring(sUrl.inde ...
- Hadoop 学习之 FAQ
在Hadoop的学习与使用过程中同样如此.这里为大家分享Hadoop集群设置中经常出现的一些问题,以下为译文: 1.Hadoop集群可以运行的3个模式? 单机(本地)模式 伪分布式模式 全分布式模式 ...
- 2016年VR&AR有市场吗?
新霸哥发现了近期虚拟现实(VR)和增强现实(AR)非常火,已经成为了科技产业中最具前景的技术之一.其实说起这两项技术的应用,人们最容易把它与电子游戏联系在一起,那么在2016年VR&AR有市场 ...
- bzoj 2134 单选错位(期望)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2134 [题意] ai与ai+1相等得1分,求期望. [思路] 每个题的期望都是独立的. ...
- 软件开发杂谈之从需求到上线---valen
背景 IT已经成为当代企业必不可少的竞争手段,从无到有到标配,可以说以后不懂IT的就是文盲这句一点也不过,而软件开发是个复杂工程,零零碎碎各种理论工具和技巧,一言难尽. 本文意在言简意赅,简述软件开发 ...