删除分支层次结构中的主干并且只具有相同级别的分支

时间:2012-02-14 15:06:16

标签: asp.net tfs branch projects-and-solutions branching-and-merging

我决定将我的TFS解决方案分支到4个分支机构。我最初有一个源代码控制的VS解决方案,称为“开发”。随着产品的增长,我决定为三个使用它的客户创建3个分支。所以我有:

  1. 开发
  2. 发 - 客户端1
  3. 发 - 客户机2
  4. 发 - Client3
  5. 我对'Development-Client2'有了一个新的更改请求,并编写了代码并进行了更改。当我检查源文件时,我注意到“开发”也考虑了这些新的变化。

    我期望发生的事情,当我分支'开发'时,我会有4个版本的解决方案,我可以合并它们之间的变更集。

    从我目前的设置来看,我在#2,#3或#4中所做的任何更改都会自动添加到#1中。

    由于分支最近发生,我觉得我现在可以解决它。有谁知道我需要什么来获得4个独立分支?

    更新

    在我的解决方案文件中,我有6个项目:

    1. ASP.NET网站(针对localhost运行)。
    2. 控制台应用程序
    3. 班级图书馆(商业逻辑)
    4. 类库(数据访问)
    5. 班级图书馆(实体)
    6. 班级图书馆(常用方法)
    7. 我注意到,对于我在'Development-Client2'中的新功能,项目2-6中的更改尚未添加到'Development'分支或'Development-Client1'或'Development-Client3'分支中。

      但是,我对“Development-Client2”中对“ASP.NET网站(针对localhost运行)”所做的任何更改都已复制到所有分支中。

      更新2

      我认为按照以下顺序发生的是:

      1. 我有一个名为Development on source control(TFS)的解决方案
      2. 我创建了一个名为Development-NewFeatureX
      3. 的分支
      4. 我分支开发 - NewFeatureX 3次,我留下了开发,开发 - NewFeatureX,开发 - 客户端1,开发 - 客户端2,开发 - 客户端3
      5. 我删除了Development-NewFeatureX分支。
      6. 我在Development-Client2分支下对项目1,3,4和5进行了大量更改。
      7. 此时,我意识到项目1的更改已在其他分支机构中复制。
      8. 我还注意到在TFS的Source Explorer部分中,每个分支的解决方案文件都指向项目的“Development-NewFeatureX”[ASP.NET网站(针对localhost运行)]

        我试图查看解决方案文件并修改以下路径:

          

        ..发 - NewFeatureX / ASPNETSITE

        为:

          

        ..发 - ClientX / ASPNETSITE

        然而,这只是不起作用,源代码控制似乎覆盖了解决方案文件。

        我认为我承认失败并试图开始一个新的解决方案。

        如果任何TFS专家知道我在说什么,请给我一些建议

        问题摘要

        • 我有4个分支。
        • 任何时候我打开项目的任何分支的解决方案文件:“ASP.NET网站(针对localhost运行)”它没有什么不同。即它是同一个。因此,如果我在任何一个分支中对这个项目进行更改,那么它就是所有分支。
        • 这个有问题的项目的映射文件夹是我之前删除的分支。
        • TFS的结构对于分支/项目似乎是正确的。只有当我打开解决方案文件时,ASP.NET站点始终是相同的。
        • 请看截图。

        enter image description here

3 个答案:

答案 0 :(得分:1)

要尝试的一些事情。

自2010年以来:您是否尝试在分支可视化工具中跟踪其中一个变更集?在您的一个孙子分支中选择一个特定的变更集,您认为它会将自己复制回其他分支并查看TFS认为它去了哪里?如果它在其他分支中亮起,具有新的变更集编号,那么这表示已发生合并。然后,您可以找到合并变更集,看看它是如何形成的。

如果没有合并,那么您认为其他分支中的特定文件的历史记录是什么,您认为这些文件是从其他地方复制过来的,并检查它们的差异以查看其更改的来源?

您检查了IIS /虚拟目录设置吗?每个分支是否指向正确的虚拟目录?

您设置了多少本地工作空间以及如何配置? TFS中的多个工作区可能会导致混淆,因为您在源代码管理资源管理器中查看的工作区可能与您在“待更改”窗口中看到的不同,这可能会导致签入到您想要的位置之外的某个位置。

最后,我很好奇 - 你想让分支与祖父母和彼此脱离的原因是什么?我不清楚删除那个父母分支并将其全部删除的好处/动机; TFS不喜欢保留这些父/子关系吗?还是很难记住?

答案 1 :(得分:1)

根据我的经验,VS总是要求使用localhost的网站。

以下是对我有用的东西:

  • 仅像这样创建Web项目:文件 - >新项目 - >网络
  • 始终指定项目的位置,即w:\ project \ code \ AppWebLocation
  • 然后你可以在项目属性 - >网络 - >服务器
    • 使用localhost / virtualDir - 它将为您执行映射
    • 使用VS Development Server - 我讨厌它: - \
    • 使用IIS Express - 我认为localhost是更好的选择。

我认为你的情况发生了什么:你使用过File - >新网站项目,它将项目放入解决方案文件,然后您将该网站连接到客户端解决方案,因为它位于同一位置。从那以后,TFS正在为所有客户从同一个地方挑选他的文件。这是皮塔饼。

答案 2 :(得分:1)

以下是我将如何根据您的情况制定我的分支和发展战略:

    • 开发(文件夹)
      • Main(公共基本代码所在的位置)
      • 客户A(主要分支机构)
      • 客户B(主要分支机构)
      • 客户X(主要分支机构)
    • 推出
      • 客户A(稳定开发客户A的文件夹)
        • 20110101(按发布日期分类,或其他指定版本)
        • 20110301(修复与客户A相关的生产错误)
      • 客户B
        • 20120210
      • 客户X.
        • 20120101

在IIS中的本地计算机上,为每个客户设置一个具有不同端口的网站,并在端口80上设置Main分支。这样您就可以访问所有版本的parralel而无需切换。

此策略允许您在Main中执行常规错误修复或常用功能,并在需要时对客户分支执行FI操作。如果需要,你可以从顾客那里进入主要的RI,但如果你坚持分支的目的,你真的不需要。

这也允许您保留一个稳定的代码版本,以满足未来的需求或每个客户的错误修复。

我知道这不能解决您的问题,但我希望它有助于您项目的未来布局。