有誰知道以下命令是否詳細或在任何表格或設定檔中列出?
表:tbl_Version 欄位:命令
- 項目清單
- 編輯=2
- 類型 = 4
- 新增資料夾 = 5
- 新增文件=7
- 重命名=8
- 重新命名、編輯 = 10
- 刪除=16
- 刪除、重新命名=24
- 取消刪除 = 32
- 取消刪除、編輯 = 34
- 分支 = 68
- 分支、刪除 = 84
- 合併=128
- 合併、編輯 = 130
- 合併、輸入、編輯 = 134
- 合併、重新命名、編輯 = 138
- 合併、刪除 = 144
- 合併、刪除、重新命名 = 152
- 合併、取消刪除 = 160
- 合併、取消刪除、編輯 = 162
- 合併、分支 = 196
- 合併、分支、編輯 = 198
答案1
如果其他人嘗試查詢 tbl_Version (TFS 2017 Update3),則枚舉位由傑西展示應在資料庫中移動一個位置。我不確定為什麼 ChangeType 枚舉會按照 Jesse 的描述進行設置,因為它會違反.NET 設計指南 CA1008和常識,顯然設置 'None'=1 而不是 0。瑞克·韋伯的價值觀非常接近正確。因此,DB 中「命令」列的位元標誌為:
(None = 0)
Add = 1,
Edit = 2,
Encoding = 4,
Rename = 8,
Delete = 16,
Undelete = 32
Branch = 64,
Merge = 128,
Lock = 256,
Rollback = 512,
SourceRename = 1024,
Property = 4096
這裡有一些蹩腳的 SQL 將它們解碼為 SELECT 中的空格分隔清單 -
SELECT TOP 10 RTRIM(
CASE WHEN Command & 1 = 1 THEN 'Add ' ELSE '' END
+ CASE WHEN Command & 2 = 2 THEN 'Edit ' ELSE '' END
+ CASE WHEN Command & 4 = 4 THEN 'Encoding ' ELSE '' END
+ CASE WHEN Command & 8 = 8 THEN 'Rename ' ELSE '' END
+ CASE WHEN Command & 16 = 16 THEN 'Delete ' ELSE '' END
+ CASE WHEN Command & 32 = 32 THEN 'Undelete ' ELSE '' END
+ CASE WHEN Command & 64 = 64 THEN 'Branch ' ELSE '' END
+ CASE WHEN Command & 128 = 128 THEN 'Merge ' ELSE '' END
+ CASE WHEN Command & 256 = 256 THEN 'Lock ' ELSE '' END
+ CASE WHEN Command & 512 = 512 THEN 'Rollback ' ELSE '' END
+ CASE WHEN Command & 1024 = 1024 THEN 'SourceRename ' ELSE '' END
+ CASE WHEN Command & 2048 = 2048 THEN 'UNKNOWN ' ELSE '' END
+ CASE WHEN Command & 4096 = 4096 THEN 'Property ' ELSE '' END
+ CASE WHEN Command & 8192 = 8192 THEN 'UNKNOWN ' ELSE '' END
+ CASE WHEN Command & 16384 = 16384 THEN 'UNKNOWN ' ELSE '' END
) 'Commands'
FROM tbl_Version
答案2
它們是二進位標誌(例如合併,取消刪除是合併+取消刪除=> 128+32 = 160),基值儲存在Microsoft.TeamFoundation.VersionControl.Client.ChangeType
(文件在這裡Microsoft.TeamFoundation.VersionControl.Client
)並且每個更改類型的基值可以透過引用組件或反映來源來找到:
[Flags]
public enum ChangeType
{
Add = 2,
Branch = 128,
Delete = 32,
Edit = 4,
Encoding = 8,
Lock = 512,
Merge = 256,
None = 1,
Property = 8192,
Rename = 16,
Rollback = 1024,
SourceRename = 2048,
Undelete = 64
}
PS:看起來你的原始表中有很多錯誤。