TFS作为源控制:你喜欢什么?你讨厌什么?

时间:2010-05-08 19:11:16

标签: tfs tfs2008

我现在已经使用TFS大约18个月了,我真的对此并不感兴趣。这似乎是目前市场上最糟糕的SCM版本。

我认为这个主题将帮助人们决定TFS是否适合他们与其他源控制系统。虽然TFS做的远不止这些,但我认为源代码控制对软件开发至关重要,因此您选择的任何系统(或其组合)都需要首先考虑源代码控制。

TFS与其他源控制有什么好处 - 它做得怎么样没有其他人这样做?

TFS不好的有什么不好其他人似乎都做得很好?

12 个答案:

答案 0 :(得分:34)

答案 1 :(得分:13)

  1. 除非您已将其检出,否则不会跟踪文件的更改,因此如果您在Notepad ++中编辑文件,则TFS不会发现任何更改。
  2. 有人可以很容易地检查出来并将其锁定,以便其他人无法进行更改。 TFS不应该放弃这种能力,但它肯定会使它比现在更难做到。
  3. 撤消提交或两个提交的方法非常不清楚,以至于我无法确定它是否有效。
  4. TFS使文件只读的方式除非你检查它们是令人讨厌的,尽管它确实帮助我记得在保存我所做的编辑之前检查文件。
    1. 我认为与visual studio的内置集成很好,如果你喜欢那种东西(我没有)

答案 2 :(得分:9)

我是Microsoft的Team Foundation Server团队的成员。这里提出了很多非常有效的问题。其中一些在2010版本中得到了解决。其他人仍然是问题,但我们确实认识到它们并且正在努力改进下一版本的开发人员体验。像这样的讨论非常有助于我们确保解决正确的问题。

以下是2010年版本至少部分解决的问题的一些信息:

独立客户

对于想要在VS之外使用该产品的非开发人员客户,他们可以使用Windows Shell扩展程序powertool

如果您有用户(开发人员或非开发人员)需要从非Window计算机访问TFS,他们可以使用Team Explorer Everywhere。包括Mac和Mac在内的平台支持此功能。 Linux操作系统。

复制工作区

今天有两种方法可以复制工作区。第一个是在cmd行使用workspace template命令。实施例

Tf / workspace / new / template [要从中复制的工作空间名称/所有者]

或者,您可以在UI中打开工作区,选择所有映射,复制它们,&然后将它们粘贴到文件/电子邮件中。其他人可以将这些相同的映射粘贴到他们的工作区中。

如果你只是简单地指定一个客户自动接收的默认工作区,那肯定会很棒,但我们今天没有。

合并健壮性

描述了添加,重命名,添加和添加的方案。在TFS 2010中解决了合并问题。

分支/合并为一流体验

在TFS 2010中,分支现在是TFS中的第一类对象。您可以想象您的分支机构和甚至跟踪他们在分支中移动时的变化。分支现在也是基于服务器的快速操作。

获取多个项目的最新版本

您今天可以通过在源代码管理浏览器中选择TFS实例节点来实现此目的。然后选择最新。这相当于根文件夹($)。

文件锁定

默认情况下,TFS在用户签出文件时从不锁定文件。这就是我们在微软和微软使用TFS的方式。我们如何看待大多数客户使用TFS。可以使用户明确锁定文件。一些客户认为这是可取的,但它不是默认的路径体验。

答案 3 :(得分:6)

Con :Checkout模型。许多应用程序不能很好地处理标记为只读的文件,然后更改为可写(Word 2007,记事本)。所以你打开一个文件,编辑文件,尝试保存,然后你被告知你无法保存,因为它是只读的。很好,现在你必须另存为...,删除原始文件并将新名称重命名为旧名称。如果将本地文件设为只读是有好处的话,我看不到它。我真的更喜欢Subversion的方法。

将文件设置为只读的一个好处是它会提醒您检查它们。然而,这实际上只是结账模式的一个症状。

答案 4 :(得分:3)

我认为TFS是当今市场上最好的ALM产品。仅从源控制平台看它是倾斜的。到目前为止,我在职业生涯中使用过很多产品:VSS,SVN,Git,StarTeam,CC / Harvest和ClearCase - 除了TFS。就个人而言,我想到回到TFS以外的任何事情都会感到畏缩。

TFS是一个非常强大的平台。我最大的问题通常与不知道如何使用或不正确使用它的人有关。它并不意味着“正常工作”的应用程序。当然,你可以将它用于基本的源代码控制,而无需了解它 - 但如果你只是使用它,那么你真的最好使用其中一个不那么强大的工具。实际上,TFS没有给你的是如何解释你想要的功能。它是专门为支持流程而构建的,而不仅仅是一个存储库。

答案 5 :(得分:3)

Con:时间戳。无法将TFS设置为使用远程上次修改时间戳作为本地最后修改时间戳。本地文件的时间戳只告诉我何时收到文件。如果我得到一个2岁的文件,根据本地时间戳,无法知道。

我使用的其他源控件具有此功能。

答案 6 :(得分:3)

缺点

  • 工作区版本:如果不进行递归搜索,则无法识别工作区的版本。
  • 糟糕的离线体验。 attrib -r + tfpt online不应该是离线工作的方式。给我一些类似git的东西,可以让我跟踪状态,撤消和进行更改。如果它只存储工作区版本和当前版本之间的差异,我甚至可以。
  • 合并健壮性:服务器上更改的文件+不同行上的本地编辑不是冲突。可写文件不应该是自动冲突。 automerge按钮不应该存在,因为它永远不应该是一个场景。
  • 工作区:能够重新排列源结构的想法很奇怪,并且会导致问题。将两个分支映射以便合并的要求是奇数。由于我的工作区映射没有真正的根文件夹,因此需要多次执行操作。
  • 完全依赖远程服务器:将所有这些内容存储在服务器上有一些好处,但实际上,您可以在本地存储信息,然后在需要时上传。保留挂起的更改,工作区映射,本地基本撤消历史记录等。

<强>赞成

  • Shelvesets:我喜欢这些,并希望支持他们也被带到本地磁盘(想想git stash)
  • VS中的源代码控制视图:能够在不下载的情况下查看整个存储库非常酷。有一些可用性问题,但整体想法很酷。
  • 工作区:是的,两个地方。虽然重新安排回购是奇怪的,但只能下载你需要的东西是非常棒的。我经常希望我可以选择一个根文件夹,然后勾选我需要的路径,但是哦。好吧。

答案 7 :(得分:2)

不喜欢:

  • 至少可以说,使用历史来弄清楚所做的事情是很麻烦的。您必须单击每个历史条目以查看更改了哪些文件,然后您需要通过上下文菜单来获取差异。
  • 在与网络断开连接时工作是一个很大的禁忌。有没有听说过在飞机上工作?
  • 使用VS以外的文件时没有Windows资源管理器集成(想想TortoiseSVN)。
  • 流程方法学家(配置管理员)喜欢不允许共享签出。例如,对于需要修改以进行测试的配置文件,这绝对是可怕的。
  • SC对复杂的移动/删除操作感到困惑。
  • SC无法识别签出文件何时未更改。例如,服务引用更新会检出所有相关文件,并且通常会重新生成完全相同的内容。这些文件应该隐式地从签到中删除,因为它们只会在您稍后查看变更集时添加噪音。

喜欢:

  • 搁架。

有人猜到哪个是我最喜欢的SCM系统? SVN + TortoiseSVN + VisualSVN: - )

答案 8 :(得分:1)

TFS 2010中未实现搜索功能? VSS我们在文件中搜索; TFS 2008我们有搜索文件......

答案 9 :(得分:1)

Con :如果您想将多个文件移动到现有位置的子文件夹,则必须一次。哇,太可怕了。

答案 10 :(得分:1)

缺乏回滚是我最大的痛点。

答案 11 :(得分:0)

缺乏真正的回滚支持和无法重命名TFS项目是我对TFS的两个主要问题。除此之外,我对它已经很开心2到3年了。

某些应用程序不支持从只读到可写的编辑内更改(强制您重新打开相关文件)这一事实令人讨厌,但这些特定应用程序确实存在问题。文件在未签出时是只读的这一事实具有某些用途,其中之一就是它提醒您签出文件。但是,它偶尔会在尝试获取文件的特定修订时导致混淆。除非您启用标记,否则不会重新下载可写文件,因为它们被视为本地编辑。