Команды управления версиями Team Foundation

Кто-нибудь знает, указаны ли следующие команды в таблицах или файлах конфигурации?

Таблица: tbl_Version Поле: Команда

  • Элемент списка
  • Изменить = 2
  • Тип = 4
  • Добавить папку = 5
  • Добавить файл = 7
  • Переименовать = 8
  • Переименовать, изменить = 10
  • Удалить = 16
  • Удалить, переименовать = 24
  • Отменить удаление = 32
  • Отменить удаление, изменить = 34
  • Ветвь = 68
  • Ветвь, удалить = 84
  • Объединить = 128
  • Объединить , edit = 130
  • Объединить, ввести, изменить = 134
  • Объединить, переименовать, изменить = 138
  • Объединить, удалить = 144
  • Объединить, удалить, переименовать = 152
  • Объединить, восстановить = 160
  • Объединить, восстановить, изменить = 162
  • Объединить, ветвь = 196
  • Объединить, ветвь, редактировать = 198
2
задан 23 February 2018 в 12:41
2 ответа

Если кто-то еще пытается выполнить запрос к tbl_Version (TFS 2017 Update3), биты перечисления , показанные Джесси, должны быть сдвинуты на одну позицию в базе данных. Я не уверен, почему перечисление ChangeType было бы настроено так, как описывает Джесси, поскольку это нарушило бы . NET руководство по проектированию CA1008 и здравый смысл, по-видимому, установив 'None' = 1 вместо 0. Это делает Значения Рика Веба довольно близки к правильным. Таким образом, битовые флаги столбца «Команда» в БД:

(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
1
ответ дан 13 November 2020 в 00:51

Это двоичный флаг ( например, Merge, Undelete is Merge + Undelete => 128 + 32 = 160) базовые значения хранятся в Microsoft.TeamFoundation.VersionControl.Client.ChangeType ( документы здесь ) и базовое значение каждого типа изменения можно найти, обратившись к сборке Microsoft.TeamFoundation.VersionControl.Client или отразив источники te:

[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: похоже, что в исходной таблице есть несколько ошибок. это.

0
ответ дан 3 December 2019 в 14:01

Теги

Похожие вопросы