TFS 2008的源码管理器-数据库相关

    技术2022-05-20  110

       这里来说下关于TFS 2008中源码管理器所对应的数据库表。在个别情况下,或许会对某个历史文件做修改(当然,除非非常情况,理论上是不允许这样做的,这里也是为了了解其结构来写的)。

        在TFS的源码管理中,每一个文件,无论是*.docx还是*.cs这类的文件,都以二进制形式被存放在TFS的数据库中,每一个 文件(这里的文件包括这个文件的历史记录)被称为一个"版本"。实际上在数据库中,每一个"版本"都会有一个ChangeSetID以其对应。记录他的迁 入时间、签入人、注释等信息。另外会有一个表,专门以二进制的方式将这个文件存入表中。这就是为什么TFS中的任何一个文件都能将其历史记录恢复,因为他 们并没有被覆盖或删除,而历史文件被作为另一个版本被存放在数据库中。

        下面介绍下关于源码管理表的

    tbl_Annotation    注释

    tbl_ChangeSet     修改记录表。这个表记录版本修改的记录。

        [ChangeSetId] 版本的 ID 。他在 [tbl_Version] 表中与 [tbl_Content] 表中的 ID 对应。

    , [OwnerId] 版本操作人的 ID 。这里是历史记录里的操作人!关于操作人可以从 [tbl_Identity] 表中找到操作人的 ID 对应。

    , [CreationDate] 修改建立时间,理论上应该与 [tbl_Content] 表中的 [CreationDate] 时间相同。

    , [Comment] 签入注释

    , [CheckInNoteId] 未知

    , [CommitterId] 提交者 ID 。这里暂未知道在哪里显示,在对比后发现应该和 [OwnerId] 相同。

    tbl_Conflict    冲突表

    tbl_Content     数据内容表。这个表通过二进制,记录着每个版本的数据内容,其中

    [CreationDate] 数据建立时间。

    , [Content] 数据内容(这里为二进制),同过流方式以 image 的类型存入。

    , [FileId] 此文件的 FileID ,他在 [tbl_Version] 表中与 [tbl_ChangeSet] 表中的 ID 对应。

    , [OffsetFrom]

    , [OffsetTo] 文件的起止大小,一般 From 0 To 为文件的大小。

    tbl_Counter

    tbl_Extension

     

    tbl_Version     版本表,里面有ChangeSet和Content的ID对应

        [VersionFrom] 这个就是 [tbl_ChangeSet] 表中的 [ChangeSetId]

    , [VersionTo] 这个是被修改的版本,被修改了的文件,他的 From To 是相同的,如果是最新文件,那么会是一个为" 2147483647 " 的值。

    , [ItemId] 这个文件的 ID ,无论他被修改了多少次(多出了多少个版本),这个文件仍是一个文件,用此 ID 标识。

    , [Command] 未知

    , [ParentPath] 父路径

    , [ChildItem] 子项目

    , [Encoding] 编码

    , [DeletionId] 未知

    , [FileId] 这个就是 [tbl_ Content] 表中的 [FileId]

    , [FullPath] 文件完全路径。

    通过版本来列出这个文件的二进制表

    select * from [TfsVersionControl]. [dbo]. [tbl_Content]

    where [TfsVersionControl]. [dbo]. [tbl_Content]. [FileId]=

    (select [TfsVersionControl]. [dbo]. [tbl_Version]. [FileID] from [TfsVersionControl]. [dbo]. [tbl_Version]

    where [TfsVersionControl]. [dbo]. [tbl_Version]. [VersionFrom]=' 文件版本 ')


    最新回复(0)