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 업데이트3)에 대해 쿼리를 시도하는 경우 열거형 비트제시가 보여준데이터베이스에서 한 위치로 이동해야 합니다. Jesse가 설명한 대로 ChangeType 열거형이 설정되는 이유가 무엇인지 잘 모르겠습니다..NET 디자인 지침 CA1008분명히 0 대신 'None'=1을 설정하면 상식적으로 알 수 있습니다.Rick Web의 가치꽤 정확에 가깝습니다. 따라서 DB에 있는 '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

다음은 SELECT에서 공백으로 구분된 목록으로 디코딩하는 형편없는 SQL입니다.

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
}

추신: 원본 테이블에 많은 오류가 있는 것 같습니다.

관련 정보