2010-08-26 26 views
2

我们使用TFS 2010与门禁签入。对于我认为是奇怪的行为,我有一些疑问。看下面的过程:TFS 2010采用独家签出的门禁签入

  1. 文件A是由我独自检查。
  2. 文件被改变
  3. 文件被选中在
  4. TFS要求建立的变化
  5. 构建开始
  6. 文件在本地恢复到旧版本
  7. 构建成功
  8. 问叫reconcile - >然而在协调期间没有任何改变
  9. 点击确定后,文件A被签入我的更改,但是我的本地文件仍然是旧版本。

它为什么会有这种行为?这对我来说似乎不合逻辑。这似乎是合乎逻辑的,直到第8步。它应该得到我的本地存储库的最新版本的文件A.这是一个设置的地方?

回答

2

根据我的理解,Reconcile通过查看签入的文件(实际搁置)来检查工作区中的文件是否有挂起的更改,并匹配内置版本。如果它们不匹配(即你在两者之间编辑),它会要求你合并。如果它们匹配,它将执行撤消操作并获取最新版本(由于TFS服务器刚刚检查了您的更改,所以它的内容相同)。

换句话说,如果您不选择在本地保留挂起的更改,则协调将不起作用,并且您需要手动进行最新操作才能将最近的更改返回到工作区。

+0

好的,更清楚一点。但是,“保留本地暂挂更改”复选框呈灰色。 – 2010-08-26 07:52:16

+0

“本地保留待定更改”变为禁用状态的一个原因是,如果有任何正在检查的项目具有锁定。 – dugas 2011-12-10 00:44:33

0

此外,如果门控签入构建失败,则通过构建服务帐户将shelveset文件保留为签出状态。我们找到了一种撤消检出文件的方法,但如果在团队项目中启用了“专属检出”,则调解无法正常工作,因此“在本地保留未决更改”显示为灰色。

1

架式

发生什么事是,当你检查,你的改变被添加到搁置集。换句话说,您的更改被搁置。搁置更改时,您可以选择回滚本地更改。

例如,当您正在处理某个问题时,突然需要解决具有更高优先级的另一个问题。然后,您可以搁置所做的更改(您正在处理的问题),并将这些更改回滚到本地。这使您可以处理新问题,并在完成后检查其更改。完成后,您可以取消您之前的工作(第一个问题)并继续工作。

门控签入

门控签入,搁置自动创建集。搁置时,您可以选择是否保留本地更改。 I.o.w.您可以搁置更改而无需在本地回滚。所以当“保持本地更改”复选框没有被选中时,你会有这种奇怪的行为(我也觉得它非常不直观)。

锁和“保留本地修改”选项

“保留本地修改”复选框被禁用但是如果任何工作空间中的文件被锁定。即使它们与您的更改无关(也不是非常直观的i.m.h.o.)。可以手动将文件锁定在文件上,或者在独占锁定的情况下自动进行锁定(在项目构建配置中禁用“允许多个检出”复选框)。因此,如果您有独占锁定并且某人修改了某个文件,则它将变为锁定状态,因此您无法使用“保留本地更改”选项。

解决方法

要解决这个问题,我想你可以选择多种毒物之一:

  • 不要使用门控签入
  • 不要使用锁定,因此不使用独家停工
  • 不要使用同事
  • 学会等待构建完成并始终执行Get最新版本(Reconcile不会那样做,因为它只会对你在同一时间修改的文件执行此操作),或者确保在编辑文件时自动执行GLV。
  • 不要使用TFS :-)

希望这有助于。