2014-07-01 72 views
0

將Grails工件檢入Team Foundation Server(TFS)之後,所有工件都會被鎖定,並且進一步腳手架失敗,例如運行generate-all,而不是先前檢入過工件的域。真的很痛苦。到目前爲止,我們在做更多工作之前一直在檢查整個項目,但這會導致其他問題。有什麼方法可以更好地管理?我是TFS的新手。Grails腳手架和tfs文件鎖定

- 編輯#1 -

當我說到鎖定的,我指的是本地文件被寫保護。

- 編輯#2 -

我想我可以使用git-TFS或GIT-TF(不知道這是真是再好不過了),可能svnbridge,但我希望能爲一個簡單的解決方案我的團隊。大多數人只和TFS合作過,而引入新版本控制系統的要求可能會破壞整個Grails項目。

回答

1

您可以將預構建事件添加到受影響的項目中。右鍵單擊該項目並選擇構建事件選項卡下的屬性,您可以輸入命令行代碼對受影響的文件進行檢查。 根據您的解決方案爲您的解決方案進行設置,最好卸載該項目,然後直接輸入到.csproj文件,以便您可以爲所有配置啓動預構建事件。

只有你的腳手架文件應該是有針對性的,這種方式當你得到最新和執行建立你的腳手架文件將被檢出,當你來做檢查檢查出來的文件將進行比較,如果沒有chages是製作到腳手架,然後簽入將被忽略,因爲沒有變化。

在您的解決方案與Grails的腳手架

Solution Structure

如果右鍵單擊該項目並選擇屬性識別您的項目,然後去生成事件選項卡

Project Properties

你可以在此處輸入腳本以進行構建前或構建,但直接在項目xml中輸入會爲您提供更大的靈活性。

卸載的項目,以便您可以編輯XML項目直接 Unload Project

然後再次右擊並選擇編輯Project.CSProj

Edit Proj file

向下滾動到項目文件的底部xml,在這裏你可以找到編譯前和編譯後的部分。條件語句應該被設置爲滿足您的需求,在這裏我假定版本只被構建使用,所以只有在配置不等於Release時纔會觸發代碼。

enter image description here

取消對預生成部分,並添加你想火所編譯的代碼之前的代碼。這只是一個示例,您可能需要根據項目的結構來擴展文件的路徑。

 <!--To modify your build process, add your task inside one of the targets below and uncomment it. 
     Other similar extension points exist, see Microsoft.Common.targets.--> 
    <!--Target for prebuild event when the configuration is not Release--> 
    <Target Name="BeforeBuild" Condition=" '$(Configuration)' != 'Release' " > 
    <!--Recursively check out everything in the sub folder--> 
    c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\tf.exe checkout Scaffolding /recursive 
    <!--Check out a list of individual files--> 
    c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\tf.exe checkout Scaffoldingfile1.cs Scaffoldingfile2.cs 
    </Target> 

然後,您可以關閉項目文件,並在Visual Studio中重新加載。

你的程序應該成爲

  • 獲得從源頭控制
  • 最新的代碼重新生成解決方案
  • 你的腳手架代碼應該自動檢出
  • 使該解決方案的任何變化
  • 執行檢查

檢查腳手架文件是否已更新時,應檢入它們,如果沒有發生變化,TFS應忽略文件並撤消檢出。

+0

這聽起來像是一個很好的解決方案。請分享這樣的語法。不知道我完全理解你的建議。 –

+0

非常感謝。我懷疑我會執行它,但似乎是正確的解決方案。看起來我們很快就會轉向Mercurial,這將成爲一個非問題。 –

0

如果您使用的是TFS 2012或更新版本,則可以使用所謂的本地工作區(而不是服務器工作區)。這將阻止TFS使您的文件成爲只讀文件。

它應該是TFS 2012+中的默認工作空間類型,但您可以通過單擊Source Control Explorer中的工作空間下拉列表選擇工作空間...然後編輯工作空間,單擊高級並檢查您的工作空間類型設置爲本地。

+0

我很傷心地使用TFS 2010。 –