23

我过去一直使用 SVN,现在我们已经过了项目的初始阶段,我们需要弄清楚我们的分支过程以进行未来的增强。

在阅读本文时,我们看到 TFS 有 Shelving。

他们如何比较?每个都有什么大问题?

一般来说,哪个是首选,为什么?

4

8 回答 8

22

搁置集是每个用户的,并且以不同的方式存储在源代码管理中 - 无法合并搁置集,没有历史记录等。唯一可能的操作是取消搁置;这样做时您甚至无法合并文件。因此,我们仅将其用作尚未完成的事物的临时存储,因此无法将其签入分支。

因此,您应该使用分支 ;-) 可能是主分支和不同的开发分支来进行功能和错误修复。

于 2010-01-13T21:24:43.433 回答
12

搁置和分支不是同一个概念。

分支是获取代码库并将其“拆分”出来,基本上是对其进行复制。开发团队都可以在自己的分支上工作(例如),然后所有更改都可以合并回原始分支。分支只能合并到 TFS 中的父分支。

搁置允许开发人员将源代码控制系统中的代码检查成“搁置”。代码未检入主分支。如果构建经理或其他开发人员“获得最新”,则默认情况下他不会获得搁置的代码。搁置像所有其他代码一样安全地存储在源代码控制中,只是不在分支中。其他开发人员可以拉下架子来查看效果。在某些时候,更改将被检入主分支,并将成为变更集的一部分。

我建议这本书: http ://www.amazon.com/Team-Foundation-Server-2008-Action/dp/1933988592/ref=sr_1_1?ie=UTF8&s=books&qid=1263417920&sr=8-1

它对搁置、合并和各种分支模型有一个非常简单但有效的解释。

于 2010-01-13T21:25:57.360 回答
7

避免货架。您总是会在较新版本的文件上恢复搁置并丢失所有已提交的更改。仅当您开始在稳定的分支上工作并意识到所需的更改比预想的要大时才使用架子。然后搁置你的工作,创建一个分支,然后取消搁置它。

于 2010-05-12T17:19:14.207 回答
6

搁置和分支是两个完全不同的东西。搁置允许您将所有更改存储到 TFS 中,但它们实际上并未签入任何特定分支。您的更改只是保存在给定名称下。这实际上非常有用,因为它是进行代码审查的好方法。我可能对 10 个不同的文件进行了更改。我将使用给定名称创建这些更改的搁置集。然后我会请其他人查看我的搁置。然后我可以取消搁置这些更改或删除搁置集。

分支是一个过程,您可以在其中制作代码主干的完整副本并为其命名和位置。然后,您可以根据代码分支签入/签出/合并。这在处理应用程序的下一个版本时非常有用。您可能会创建一个分支来处理新功能。

这是搁置集的一个很好的解释:http: //msdn.microsoft.com/en-us/library/ms181403 (VS.80).aspx

于 2010-01-13T21:23:42.060 回答
5

搁置集是未决更改、评论和相关工作项的集合。

场景:

  • 备份
  • 临时移动更改以处理不同的问题
  • 远程代码审查
  • 好友构建或协调更改

当您的开发团队需要同时处理项目的两个不同副本时,需要一个分支。

于 2010-01-13T21:35:49.940 回答
2

在不同的分支上取消搁置不是 TFS 的默认功能。

要在不同的分支上取消搁置,您需要按照此博文中的说明进行操作

这意味着从 VS 库安装 TFS2010 Power Tools。

于 2012-09-28T08:10:52.100 回答
1

分支,是主分支的副本。您可以使用分支来表示尝试做某事的想法。这很棒,因为如果出现问题,您可以丢弃原始文件,就像删除文件的副本一样。如果一切顺利,您将分支合并回原来的分支,例如“Main”。

Shelve 类似于临时文件夹。您可以将它们用于代码审查,或者像我们一样,或者如果您需要修复某些东西,那么它就在 TFS 中并进行了备份。你搁置你正在处理的任何代码(给它一个标签),然后恢复到 main。完成后,您将 Main 换成您的 Shelve,生活将继续,不会停止。

于 2010-01-13T22:17:26.580 回答
1

如果由于某种原因无法提交更改,则可以搁置更改。然后可以选择保留本地更改(即在本地保留搁置的副本)或在本地恢复到当前版本(并且更改仅存在于搁置的副本中)。如果将更改保存在本地,搁置是一种将代码版本保存在存储库中并避免本地磁盘崩溃的好方法。

此外,当您进行了许多尚未签入的更改并且想要在开始“风险和复杂”的编码实验之前保留该版本时,搁置很有用。如果实验结果很糟糕并且想要丢弃它,可以简单地取消搁置搁置的副本。如果实验成功,人们可以简单地删除搁置集或让它默默无闻。

于 2013-12-19T21:05:50.947 回答