我的团队中有一个反复出现的问题让我抓狂。
人们声称 Team Foundation Server 中的某些签入会覆盖以前的签入/现有代码。
他们声称你总是需要做Get Latest Version
在办理登机手续之前。
换句话说,运行获取最新信息是正确签入的先决条件。
对此,我答复如下:
必须有一个TFS
如果上述情况确实发生,我们缺少/未检查的定义/设置。拥有一个版本控制系统有什么意义?not在签入时自动警告您有关代码冲突的信息(如果在您签入之前其他人签入了与您不同的代码)?我会理解是否有设置设置这个或那个行为(无论数据库中现在有什么,都检查或警告是否存在冲突并提示操作(合并))。
我想明白:我错了吗?!这就是简单的方法吗TFS
作品?Get Latest
无论如何,在办理入住手续之前都是强制性的?!
顺便说一句,如果在不手动运行获取最新版本的情况下签入是有风险和危险的,那么微软为什么不将其设为默认行为?!
提前致谢!
我同意@JamesReed 的观点,TFSalways检查冲突而不是盲目覆盖他人的工作;这毕竟是版本控制系统的根本目的!
我也同意故意的用户操作(即错误)是覆盖先前提交的唯一方法。
然而,我在一个重要的观点上不同意。詹姆斯指出:
更改位于文件的不同部分,因此 TFS 尝试
自动解决冲突。我希望这个为了相当安全和
您会看到两组更改。 [强调我的]
是的,TFS 将自动解决文件不同部分的更改但这远不安全!考虑以下场景。开发人员 A 进行如下更改并提交。开发商B,从相同的原件开始,对文件的不同部分进行更改并提交。 TFS,或者任何与此相关的版本控制系统,都会非常愉快地自动合并,产生损坏的代码!
考虑到这一点,让我将原来的问题细化为两个阶段:
- Is
Get Latest
-before-commit 强制以避免丢失代码?No.
- Is
Get Latest
-before-commit 强制维护代码完整性?Yes!!
总之,最佳实践要求人们应该获取最新的更改,然后manually在新上下文中检查您即将提交的更改,然后最后进行提交。
(为了进一步阅读,我参考 Subversion 详细介绍了这一点,但无论您使用哪种 VCS,它都适用:Subversion 和 TortoiseSVN 食谱第 1 部分.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)