【问题标题】:TFS and SubversionTFS 和颠覆
【发布时间】:2010-12-30 19:49:00
【问题描述】:

我有以下目标:

  1. 具有持续集成的共享源代码控制
  2. 能够在不影响其他团队成员的情况下签入可能会或可能不会构建的增量更改(即中断更改)
  3. 无需工作几天即可获得签入增量更改的报告(不是有关签入的 FACT 报告,而是实际差异报告 - 后期编辑:我现在知道这是“统一差异”)

一种可能的解决方案是使用 TFS 作为具有持续集成的主要源代码控制,然后在此基础上使用个人颠覆实现来跟踪和检查可能会破坏构建的增量更改。

我了解 TFS 有搁置选项,但我认为 TFS 没有很好的签入差异摘要报告(见下文),也没有我知道的轻松查看搁置集差异的方法.

所以,问题是:

  1. 有谁知道如何为每个文件获取包含此类内容的 SVN 签入报告(或者,就此而言,如何从 TFS 中获取此类内容):
SetErrorMessage("您输入的浓度无效。"); 返回; } - c.Concentration = decimal.Parse(concentration); + 十进制数 = 0; + if (decimal.TryParse(concentration, out num)) + c.Concentration = decimal.Parse(concentration); + 其他 + { + SetErrorMessage("无效的浓度。"); +返回; + } + c.UnitOfMeasure = 单位;
  1. 有人有重叠源代码控制的经验吗?

  2. 最后,有谁知道如何仅使用 TFS 或仅使用 SVN(或其他东西)来实现这些目标?

感谢您的任何意见。

【问题讨论】:

  • 在提交搁置的更改集之前,为什么要对它进行比较?
  • Mitch - 我希望看到每天完成的工作,以跟上团队正在做的事情,而不是试图大块地消化它。
  • 关于从 TFS 获得统一差异,这里有一些回答:stackoverflow.com/questions/1977309/unified-diff-in-tfs(尽管仍然不像 svn 中那么简单)。基本上, tf diff /shelveset: /format:unified (但它会将其溢出到命令窗口中,这不是完全有用的东西)。

标签: svn version-control tfs


【解决方案1】:

SVN 两者都可以。

  1. 具有持续集成的共享源代码控制

“共享源代码控制”正是 SVN 所做的。

SVN 本身不做持续集成(CI),但是有很多 CI 服务器与 SVN 很好的集成(CruiseControl、CruiseControl.NET、Jenkins、Hudson...)。在 OS 社区中,座右铭通常是“做一件事,但要做好”,因此 SVN 不捆绑 CI 功能,而只是与您使用的任何 CI 服务器集成。

  1. 检查可能或可能的增量更改的能力 不构建(即破坏性更改) 不影响其他团队成员

这通常使用分支来完成。基本上,您创建源代码树的(虚拟)副本,然后在那里提交您的更改,与主存储库树(所谓的trunk)分开。当您满意时,您将分支中的更改整合(“合并”)到主干中。

或者,您可以这样工作,使您的代码始终构建。我实际上认为这是一个更好的解决方案:-)。尽管如此,分支对于破坏性更改或需要彻底测试的更改仍然是必要的。

  1. 无需工作天数即可获得报告的能力 签入的增量更改(不是 登记入住的事实报告 制作,但实际的差异报告 - 迟到 编辑:我现在知道这是一个“统一 差异”)

分支列表(通常都位于一个目录中)将为您提供尚未在主干中的各种更改的列表。对于每个分支,您可以使用svn diff 获取到主干的差异(计算分支中的 HEAD 和主干中的 HEAD 之间的差异)。

【讨论】:

    【解决方案2】:

    SVN 本身可以很容易地为您生成这样的差异。 svn diff 实用程序只需要两个修订版,它们可以从 svn 日志中获取,也可以通过其他一些机制存储。一种选择是在星期五接近一天结束时标记一些提交,然后从该标记区分到 HEAD。另一种选择是 grep svn 日志的日期,但这有点 hacky。

    我没有使用过 TFS,所以很抱歉我没有使用它。

    【讨论】:

    • 我在 SVN 中还不够流利,不知道如何修改您所描述的 svn diff 实用程序 - 如果您能稍微描述一下,那就太好了。但无论如何,感谢您的建议。
    • 它只是 svn diff -rHEAD:101 其中 101 是你想要的任何版本。或者,如果你制作了一个标签,你可以把它放在 101 的地方,你就可以开始了。这个的低技术版本只是为了记录你在星期五的最后一次修订是什么,并在它们之间进行区分。因此,如果上周五是 101,而本周五是 150,那么您只需 svn diff -r150:101。这就是你需要做的一切:)
    • 谢谢,查克!这很有帮助
    【解决方案3】:

    看看the documentation for svn diff。它描述了如何使用它以及它接受的不同参数。

    【讨论】:

      猜你喜欢
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多