【问题标题】:From source-control perspective, how does TFS operations compare to SVN?从源代码控制的角度来看,TFS 操作与 SVN 相比如何?
【发布时间】:2012-01-01 13:19:12
【问题描述】:

从源代码控制的角度来看,对于用户而言,TFS 和 SVN 之间的真正区别是什么?

例如:在 SVN 上我们有基本的命令:

  • 退房
  • 导出
  • 提交
  • 更新
  • 删除
  • 还原

每个文件都有自己的修订号。

TFS 也有这些命令吗?每个文件都有自己的修订号?

请仅从源代码控制的角度回答。错误跟踪、ALM 和定价与此问题无关。

【问题讨论】:

  • 在 SVN 中,版本库有一个修订号,而不是每个文件。
  • 每个文件都有自己的修订号是什么意思?在 SVN 中,同一提交中的所有文件共享相同的修订号。
  • @Rob,Albin 比我做得更好:一起提交的每组文件都有相同的修订号。如果你提交一个文件,它会被分配一个修订号。

标签: svn version-control tfs


【解决方案1】:

我认为的主要区别是,Subversion (仅)支持真正的乐观锁定策略,这意味着您通常彼此并行工作,而第二个(以及后来的)必须将它们的更改合并到那些其他人。

在 TFS 中,您必须先签出,也就是说,保留文件以进行更改,以执行任何工作。这导致了更悲观的锁定策略。

是的,一个很大的区别是,离线工作不是 TFS 的选项,Subversion 完全支持。

在我看来,TFS 对分支和合并有更好的支持(至少 UI 在这里有很大帮助)。

TFS 和 Subversion 在提交/签入时具有相似含义的不同术语。(以下来自使用过这两种工具的同事。)

定义: 修订: 一个 svn 提交操作会将对任意数量的文件和目录的更改发布为单个原子事务 -> http://svnbook.red-bean.com/

定义: 变更集: 变更集是一个逻辑容器,Team Foundation 在其中存储与单个签入操作相关的所有内容,具体而言:文件和文件夹修订 -> http://msdn.microsoft.com/en-us/library/ms181408%28v=vs.80%29.aspx

在签入期间,每个文件都与签入编号相关联(在 Subversion 中计数)。如果您浏览文件夹/文件的历史记录,您可以将历史记录视为带有列的表格: changeSet Numbers / date / comment 在我看来,@Annotate 函数是一个不错的功能。使用此功能,您可以在 LOC 级别查看一个文件的变更集(第 2-5 行已由 changset 2 "添加日志记录,第 10 行已由 changset 5 "检查空值" ;-) 更改)

【讨论】:

  • +1,谢谢,在编辑文件之前强制签出/保留加上没有离线编辑是我想知道的区别。但是文件是否也有修订号,例如 SVN ?我可以以某种方式查询 TFS 以确定文件的当前编号吗?
  • 我已将信息添加到类似条款修订和更改集中。
  • "在 TFS 中,您必须先签出,这意味着保留文件以进行更改,以执行任何工作。这导致了更悲观的锁定策略。" - 这不会阻止多人编辑同一个文件,但二进制文件除外,无论如何都无法合并“是的,一个很大的区别是,脱机工作不是 TFS 的选项,Subversion 完全支持。 " - 2008 年以上错误:stackoverflow.com/questions/313653/…
【解决方案2】:

所有源代码控制系统都支持您列出的命令,因为它们是任何 SC 甚至必须被视为功能性的绝对最低要求。

在它们之间做出决定时实际上只有几件事需要考虑,其中大部分都明确排除在您的问题中......

重点是,如果您将 TFS 简化为只是一个源代码控制系统,那么差异可以忽略不计。仅供参考,我已经广泛使用(每次超过 5 年)并且目前只使用 TFS,因为附加功能被打包到一个包中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2012-10-31
    • 2010-11-25
    • 1970-01-01
    • 2013-05-12
    • 2021-04-07
    • 2016-05-11
    相关资源
    最近更新 更多