这里来说下关于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]=' 文件版本 ')