2010-08-26 52 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 :-)

希望這有助於。