TFS简单合并问题

时间:2010-09-24 15:48:04

标签: version-control tfs merge

好像我的场景尽可能简单。我有Main和一个名为Dev的分支。我在Dev中选择了一个只有我的代码并进行了合并的目录(根据特定变更集的所有变更集。

第一个问题,它是否立即检查合并,或者我应该在那之后立即进行检查?我问因为这些消息,我把它们保存在记事本中,但没有记下我的确切做法。冲突是由于目录结构的变化。

变更集322已成功签入。

  

删除C:\ SourceEagleConnect \ Main \ BizTalk \ ACH \ Sample \ Sample1.sln   TF14119:无法将$ / EagleConnect / Dev / BizTalk / ACH / BizTalk的删除合并到$ / EagleConnect / Main / BizTalk / ACH / BizTalk,因为其中一个子节点已重命名或移动。   TF14121:先前对$ / EagleConnect / Dev / BizTalk / ACH / Sample1 / Sample1.sln进行的尚未合并的更改将通过合并删除$ / EagleConnect / Dev / BizTalk / ACH / Sample1 / Sample1.sln而被丢弃。   TF14119:无法将$ / EagleConnect / Dev / BizTalk / ACH / BizTalk的删除合并到$ / EagleConnect / Main / BizTalk / ACH / BizTalk,因为其中一个子节点已重命名或移动。

'ACH'项目真的不是我关注的项目,它是其他项目中的关键文件。

然后我使用比较工具来比较Dev和Main的磁盘,我看到Main中的许多文件没有Dev的更改。

在一个特定文件中,我做了以下分析。我在Dev和Main中做了“查看历史记录”,然后从命令行“tf merges Dev / file Main / file”运行。

查看历史开发展示:

213 edit    nwalters    8/6/2010 2:43 PM    New Host Names based on application instead of adapter 
159 edit    nwalters    7/20/2010 10:16 AM  BTDF - reset to use new SettingsFileGenerator.xml, improved to handle new EagleConnectConnectionString 
50  branch  nwalters    6/22/2010 10:04 AM  Original checkin of "Dev" Branch

查看主要节目的历史记录:

323 merge, edit nwalters    9/23/2010 2:02 PM   BizTalk-Only Merge 09/23/2010 (there were some ACH warnings) 
175 merge, edit nwalters    7/27/2010 2:29 PM   Check-in after big merge of all BizTalk from Dev to Main 
49  add nwalters    6/22/2010 10:00 AM  Original checkin of EagleConnect source cod to TFS

“tf merges”显示:

Changeset Merged in Changeset Author                           Date
--------- ------------------- -------------------------------- ----------
     159                  175 nwalters                         7/27/2010
     213                  323 nwalters                         9/23/2010

所以它看起来像变更集213,“丢失”的变化包含在323合并中。然而,当我查看主要源代码时,它不存在(它不在磁盘上,如果我在源代码浏览器中执行“视图”[来自历史记录],它似乎也不在TFS中)。

当我现在进行合并时,它说“没有合并”。

2 个答案:

答案 0 :(得分:3)

关于你的第一个问题, 从Source分支到Target分支的TFS合并不会自动将合并更改签入到目标分支中。 TFS合并的工作方式是 - 假设您使用了最新版本选项进行合并:

  1. 它会比较目标分支中变更集的历史记录,并确定需要将源中的变更集合并到目标中。

  2. 它将Source分支的变更集的SERVER版本复制到Target分支的LOCAL版本(这使您有机会使用这些更改构建本地目标,并确保它不会破坏现有构建之前你检查一下。)

  3. 一旦您对目标分支的LOCAL中的合并更改感到满意,您需要手动将这些更改签入目标分支。

  4. 因此,在合并之前,您始终需要将最新版本的Target分支发送到您的本地。

答案 1 :(得分:0)

我在另一台机器上做了最新的,并且代码完美匹配(Dev与Main的磁盘比较)。所以我现在正在努力,显然每个不匹配的项目都是由以下原因引起的:

  1. 在TFS之外进行了更改
  2. 从未检查过TFS(有些我忘记了办理登机手续,其他人则是无法办理登机手续的bin / debug类型文件)。