Кто-нибудь знает, подробно ли описаны или перечислены следующие команды в каких-либо таблицах или файлах конфигурации?
Таблица: 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 должно быть установлено так, как описывает Джесси, поскольку это нарушитРуководство по проектированию .NET CA1008и здравый смысл, очевидно, установив «None»=1 вместо 0. Это делаетЦенности Рика Уэбадовольно близко к правильному. Битовые флаги столбца 'Command' в БД, таким образом, следующие:
(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
Это двоичный флаг (например, Merge, Undelete — это Merge+Undelete => 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: похоже, в вашей исходной таблице есть ряд ошибок.