elvis0123

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

    这里来说下关于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]文件的起止大小,一般From0To为文件的大小。

tbl_Counter

tbl_Extension

 

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

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

,[VersionTo]这个是被修改的版本,被修改了的文件,他的FromTo是相同的,如果是最新文件,那么会是一个为"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]='文件版本')

posted on 2010-11-25 14:17  elvis  阅读(611)  评论(1编辑  收藏  举报