首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Team System:Word 增益集整合 TFS 版控——簽入說明、簽入原則與衝突處理

     編輯:關於.NET

系列背景

本系列第五部(最終部),前文已實作簽入/簽出/取消掛起/關聯工作項目。本文補完:簽入說明 UI、簽入原則驗證、簽入衝突處理。

簽入說明

VersionControlServer.GetCheckinNoteDefinitions() 取得定義(名稱、顯示順序、是否必填)。Word 增益集需動態產生切換鈕、面板、標籤與文字框。必填驗證需自行實作邏輯阻擋簽入。

簽入原則

Workspace.EvaluateCheckin() 可預檢:衝突、缺漏說明、原則違規。參數含 PendingChange 陣列(全部/選取)、註解、CheckinNote、WorkItemCheckinInfo。回傳 CheckinEvaluationResult 含三類失敗集合。

Word 情境下,內建三原則僅 Work Item Required 相關。需忽略無關原則錯誤:

Dim cer As CheckinEvaluationResult = ...
For Each pf As PolicyFailure In cer.PolicyFailures
    Dim i As IPolicyDefinition = DirectCast(pf.Policy, IPolicyDefinition)
    Dim processPolicy As Boolean = (i.Type = "Work Items")
    If Not processPolicy AndAlso i.Type = "Custom Path Policy" Then
        processPolicy = (i.Description = "Work Items") ' 處理委派原則
    End If
    If processPolicy Then ' 處理此失敗 ' End If
Next

簽入衝突

Office 檔案預設獨佔簽出(停用合併),理論上無衝突。但 TFS 2005 預設簽出不自動取得最新版,導致簽入時可能衝突。

解法:簽出前手動 Workspace.Get(..., VersionSpec.Latest, ..., GetOptions.Overwrite) 強制更新:

Dim status As GetStatus = m_userWorkspace.Get( _
    New String() {docPath}, VersionSpec.Latest, RecursionType.None, _
    GetOptions.GetAll Or GetOptions.Overwrite)
If status.NumConflicts + status.NumFailures + status.NumOperations + status.NumWarnings = 1 Then
    m_userWorkspace.PendEdit(docPath)
End If

若仍發生衝突,可用 EvaluateCheckin 取得 Conflicts,呼叫 Workspace.ResolveConflict 並設 Resolution.AcceptYours。

總結

至此具備打造豐富自訂簽入體驗的完整工具箱。後續可研究 TFS 2008 更新 API 及 Rosario 版本增強功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved