我目前负责将我们的asp.net应用程序从源代码安全迁移到TFS。我们有三到四个非常相似的应用程序(比如说电子商务),它们目前共享一个核心库(服务、业务逻辑、实体、数据访问等)。
这些应用程序是相似的,但又不完全相同,因此一个应用程序可能会获得一个其他应用程序无法获得的功能集,等等。
我想停止代码共享,转而设置分支(如果合适的话),因此如果我更改了应用程序A的核心库中的某些内容,我将需要将更改与其他分支合并,而不是自动获取更改。这是为了避免当你从你的主干更新时,突然另一个项目的核心改变了,这个项目以某种方式中断了。
关于如何在TFS中设置它,有什么建议吗?我是否应该有一个“主”核心,它不会直接用于所有其他核心的父项目中,这样我就可以将更改从一个核心推送到那个核心,然后将其分发到其他核心?这有意义吗?在TFS中设置起来容易吗?
发布于 2009-05-15 09:29:56
作为对您的评论的回应,我建议您阅读CodePlex网站上的Feature branches。
方案4-功能分支
在此场景中,您将创建一个开发分支,在该分支中执行工作,然后将您的工作合并回您的主源代码树中。您可以根据产品功能组织您的开发分支。下面是显示功能开发分支的物理视图:My Team Project
Development -> Isolated development branch container
Feature A -> Feature branch
Source
Feature B -> Feature branch
Source
Feature C -> Feature branch
Source
Main -> Main Integration branch
Source在不久的将来,我们也将从SS迁移到TFS。
据我所知,我们将保持我们的SS存储库在线,并在TFS中重新开始。我们的框架可能会在TFS中有自己的项目。特定于项目的共享单元将需要不时地进行合并。
您构建存储库的方式取决于您的特定情况。每个分支场景都有其特定的优点和缺点。
查看CodePlex branching guide,获取关于您的TFS结构做出明智决策所需的所有信息。打印出cheat sheets并将它们固定在墙上,以便快速参考。
在执行分支计划之前,请注意以下警示信息-您创建的每个分支都有成本,因此请确保从中获得一些价值。TFS中的分支机制被简化为单个右键单击分支命令。然而,分支的总成本是通过降低main的代码速度来支付的,合并冲突和额外的测试可能代价高昂。
发布于 2009-05-18 16:53:46
我假设你已经调查过是否真的需要将你的“副本”与团队项目分开。请记住,“团队项目”的TFS概念是一个非常大的高级容器。它与大多数It商店认为的“项目”不是一回事。将"Microsoft Vista“或”Office2007“视为一个项目,而不是说”XYZ公司应收账款系统的新版本“是团队项目意义上的一个项目。
我有一个客户决定为TFS选择一个单一的团队项目。这没有什么错--在许多情况下,这确实是最好的方案。
如果您确实需要在应用程序副本之间建立非常强的隔离(可能它们是独立的客户端,您需要非常强的安全隔离),并且必须拥有独立的团队项目。
也就是说,您仍然需要在应用程序的实例之间共享代码。我强烈建议的第一件事是远离“剪切和粘贴”共享。我真的会尝试将共享代码隔离到一个独立的解决方案中,并为此生成二进制文件(可能您已经这样做了!)
Codeplex TFS中介绍了这一点:http://tfsguide.codeplex.com/
我为几个客户做过的另一种方法是拥有一个包含共享代码的团队项目。“构建”为共享代码创建二进制文件--“部署”只是将它们复制到“已知位置”(即构建机器上的UNC共享)。
对于作为“框架”的“消费者”的应用程序,我们只需使用"AdditionalReferencesPath“项组来包含该已知位置的位置。
此外,这个工具:http://tfsdepreplicator.codeplex.com/可能很有帮助。这将允许您在构建“框架”解决方案时自动触发“消费者”项目的构建。
发布于 2012-06-21 22:22:33
我的简单回答是,您应该只设置一个“TFS项目”,并简单地组织您的不同项目,即您的各个应用程序和每个共享库,作为该TFS项目下的单独文件夹。另一种选择是在每个单独的应用程序中包含特定的共享库的(二进制)构建-如果这样做,那么您可以将每个应用程序组织到它自己的TFS项目中,尽管您不能在不使用TFS命令行(以及一些不明显的引导命令)的情况下合并更改或分支这些项目。
https://stackoverflow.com/questions/867628
复制相似问题