我已经使用TFS大约18个月了,但我对它并不感到兴奋。它似乎是目前市场上最差的版本控制系统之一。
我认为这篇文章将帮助人们决定是否选择TFS而不是其他源代码控制系统。虽然TFS做的事情远不止如此,但我认为源代码控制对软件开发非常重要,因此您选择的任何系统(或其组合)都需要首先考虑源代码控制。
TFS相对于其他源代码控制有哪些优点-它比别人做得好在哪里?
TFS有什么短板-与其他系统相比,它做得不好的方面是什么?
我已经使用TFS大约18个月了,但我对它并不感到兴奋。它似乎是目前市场上最差的版本控制系统之一。
我认为这篇文章将帮助人们决定是否选择TFS而不是其他源代码控制系统。虽然TFS做的事情远不止如此,但我认为源代码控制对软件开发非常重要,因此您选择的任何系统(或其组合)都需要首先考虑源代码控制。
TFS相对于其他源代码控制有哪些优点-它比别人做得好在哪里?
TFS有什么短板-与其他系统相比,它做得不好的方面是什么?
优点
缺点
有一个领域它的可靠性极差:如果您在“一步”中对文件应用了多个更改(添加、重命名、编辑),它会变得非常混乱。如果您不单独检查这些操作,TFS2005和TFS2008 崩溃,当您将这些更改合并到分支时。从2010年开始,它不再崩溃,但它经常无法正确地检入更改,因此您必须进去清理缺失和名称不正确的文件。
没有独立的源代码控制浏览器。它集成在VS中,当您想要仅处理源代码控制项而不需要运行另一个VS副本时,这真的很恼人。当然,您可以给您的艺术家一个Team Explorer,但让我们问自己,只想查看文件、签出、签入和GLV的艺术家是否真的需要运行复杂的VSTS实例才能实现呢?此外,集成太差,以至于您无法从解决方案资源管理器真正实用地使用TFS(它仅关于您已检出的内容是假的,并且在该窗口应用操作时非常不可靠,因此您很快就学会了打开源代码控制窗口并在其中工作,这违背了首次集成的意义)[编辑:文件浏览器扩展非常出色-接近独立浏览器-并且简单易用。它的主要缺点是缺少与文件命令的正确集成-重命名或删除文件时必须记住使用TFS子菜单,否则您将本地重命名/删除文件,并且这会完全破坏源代码控制,因为TFS不知道您所做的更改。这不幸地意味着只有“高级”TFS用户可以信任使用它。因此,对于大多数用户而言,仍然是“没有独立浏览器”的情况。
使用本地工作区需要在计算机上保存两份副本。当我们升级TFS时,我们突然发现每个人都失去了25GB的磁盘空间,需要几周的时间才能找出磁盘空间去哪了!对我们来说,这是一个重大问题,因为我们都使用SSD,直到现在(2014年)SSD变得足够大/便宜,我们才能负担得起这种磁盘空间效率低下的做法。
在使用本地工作区的几周中,我们遇到了几起TFS损坏文件或丢失更改的事件,推测是由于实现中的错误所致。简而言之,我们不能接受源代码控制系统的可靠性低于100%。
TFS变得越来越易于管理;现在如果您不想太过定制化,您可以在很短的时间内(几个小时)设置一个服务器,并且设置持续集成构建和备份等非常容易。但与此相反的是,虽然我发现很容易设置TFS数据库的备份,但在我们的服务器崩溃后恢复该数据库并重新运行起来却是另一回事 - 它花了4天的时间来解决所有不必要的阻塞问题(例如,您必须从网络驱动器上还原备份,数据不能是本地的。当我试图将映像还原到重建的服务器时,TFS不断告诉我没有可以还原的数据库。当我克服了这个问题后,TFS不会使用这些数据库,因为它们与主机服务器不匹配(因为该服务器已经不存在了,操作系统已被重新安装)。花费了很多搜索和调整才能使备份恢复。恢复应该是“即插即用”的!
正如您所看到的,上述大部分只是微不足道的用户界面问题。有很多可以改进的地方。但实际的基础产品是不错的。在过去的28年中,我更喜欢TFS而不是其他大多数软件配置管理工具。
我并不介意糟糕的用户界面,但开发人员需要每时每刻使用它作为核心界面之一,并且他们必须支付大量费用才能使用它。如果来自单个开发人员的订阅费用被用于改进用户界面,它将极大地改善 TFS 的可用性!想到 TFS 只是“好的”或“还行”,而它可以很容易地成为“极好”的,这令人痛苦。
Tf /workspace /new /template[工作区名称/要复制的所有者]
或者,您可以在UI中打开一个工作区,选择所有映射,将它们复制,然后粘贴到文件/电子邮件中。然后,其他人可以将这些相同的映射粘贴到他们的工作区中。
如果您可以简单地指定客户端自动接收的默认工作区,那肯定会很好,但我们今天还没有这个功能。
合并健壮性
在TFS 2010中已经解决了描述的场景,在进行添加、重命名、添加等操作时,当您进行合并时会遇到问题。
分支/合并为一流体验
在TFS 2010中,分支现在是TFS中的一流对象。您可以可视化您的分支,甚至跟踪它们通过分支的变化。分支也是基于快速服务器的操作。
获取多个项目的最新版本
您可以通过选择源代码控制资源管理器中的TFS实例节点,然后选择获取最新版来完成此操作。这相当于根目录($)
文件锁定
默认情况下,当用户检出文件时,TFS不会锁定文件。这是我们在微软使用TFS的方式,也是我们看到大多数客户使用TFS的方式。可以让用户显式锁定文件。有些客户认为这很理想,但这不是默认的路径体验。我认为TFS是目前市场上最好的ALM产品。仅从源控制平台来看是片面的。我在我的职业生涯中使用过许多产品:VSS、SVN、Git、StarTeam、CC/Harvest和ClearCase,除了TFS。就个人而言,想到回到除TFS之外的任何其他产品,我都感到不安。
TFS是一个非常强大的平台。我遇到的最大问题通常与人们不知道如何使用它或者错误地使用它有关。它并不意味着成为一个“只是工作”的应用程序。当然,你可以在不学习太多关于它的内容的情况下将其用于基本的源控制,但如果你只是用它做这些,那么你真的最好使用其中一种不太强大的工具。实际上,TFS不能给你的是以你想要的方式解释功能的方法。它是从头开始专门构建支持流程而不仅仅是存储库。
缺点: 时间戳。TFS没有设置选项可以将远程最后修改时间戳作为本地最后修改时间戳。本地文件的时间戳只能告诉我获取该文件的时间。如果我获取了一个两年前的文件,就无法根据本地时间戳知道这一点。
我使用过的其他源代码控制工具都有这个功能。
缺点:
优点
不喜欢:
喜欢:
有人猜到我最喜欢的SCM系统是哪个吗? SVN + TortoiseSVN + VisualSVN :-)
在TFS 2010中未实现搜索功能? 在VSS中,我们可以在文件中搜索;在TFS 2008中,我们可以搜索文件...