Team Foundation 版本控制命令

Team Foundation 版本控制命令

是否有人知道以下命令是否详细或列在任何表格或配置文件中?

表: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),则枚举位Jesse 展示应该在数据库中移动一个位置。我不确定为什么要设置 ChangeType 枚举,就像 Jesse 描述的那样,因为这会违反.NET 设计指南 CA1008和常识,显然设置 'None'=1 而不是 0。这使得Rick Web 的价值观非常接近正确。因此,数据库中“命令”列的位标志为:

(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
}

附言:看起来您的原始表格中存在许多错误。

相关内容