TFS和Subversion

时间:2009-12-29 15:57:47

标签: svn version-control tfs

我有以下目标:

  1. 持续集成的共享源代码管理
  2. 能够在不影响其他团队成员的情况下签入可能会或可能不会构建(或打破更改)的增量更改
  3. 能够在没有工作日的情况下获得已签入的增量更改的报告(不是报告已签入的FACT报告,而是实际差异报告 - 后期编辑:我现在知道这是一个“统一的差异”)
  4. 一种可能的解决方案是使用TFS作为主要源控件并进行持续集成,然后使用个人subversion实现来跟踪和检查可能破坏构建的增量更改。

    我知道TFS有搁置选项,但我不认为TFS有一个很好的签到差异摘要报告(见下文),也没有我知道的方法可以轻松看到搁置的差异。

    所以,问题是:

    1. 有没有人知道如何为每个文件获取SVN的签到报告(或者,就此而言,如何从TFS中获取此类内容):
    2.         SetErrorMessage("You have entered an invalid concentration.");
              return;
            }
      -     c.Concentration = decimal.Parse(concentration);
      +     decimal num = 0;
      +     if (decimal.TryParse(concentration, out num))
      +        c.Concentration = decimal.Parse(concentration);
      +     else
      +     {
      +        SetErrorMessage("Invalid concentraion.");
      +        return;
      +     }
      +
            c.UnitOfMeasure = units;
      
      
      1. 有没有人有重叠源控制的经验?

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

      3. 感谢您的任何意见。

3 个答案:

答案 0 :(得分:4)

SVN可以做到这两点。

  
      
  1. 持续集成的共享源代码管理
  2.   

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

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

  
      
  1. 检查可能或可能的增量更改的功能   不构建(即,破坏变化)   而不影响其他团队成员
  2.   

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

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

  
      
  1. 能够在没有工作日的情况下获得报告   签入的增量更改(不是   办理登机手续的事实报告   制作,但实际差异报告 - 迟到   编辑:我现在知道这是一个“统一的   差异“)
  2.   

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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