Hoje, um cliente que passará por uma auditoria, me pediu um relatório que exibisse todas as changesets realizadas durante um período, por um determinado usuário e que apresentasse todos os arquivos alterados na changeset.

O TFS não possui nenhum tipo de relatório que apresente essa listagem pronta, mas também não é nada do outro mundo construir um relatório que apresente isso. Com uma simples query você consegue puxar todos os dados para construir o seu report.

Basicamente você precisará consultar as tabelas tbl_Changeset e tbl_Version para obter as changesets e lista de arquivos e depois mais 3 tabelas para conseguir descobrir o nome do usuário, sendo elas tbl_VCIdentityMap, tbl_IdentityMap e tbl_identity, lembrando que apenas a última não está na base da sua Team Project Collection, ela está na base TFS_Configuration.

A query final apresenta o seguinte formato:

1
2
3
4
5
6
7
8
9
10
11
12
SELECT
	cs.ChangeSetId,
	i.DisplayName,
	v.FullPath, 
	cs.Comment,
	cs.CreationDate AS [DATE]
FROM tbl_Changeset cs
		INNER JOIN tbl_Version v ON v.VersionFrom = cs.ChangesetID
		INNER JOIN tbl_VCIdentityMap vcim ON cs.OwnerId = vcim.IdentityId
		INNER JOIN tbl_IdentityMap im ON vcim.TeamFoundationId = im.localId
		INNER JOIN Tfs_Configuration..tbl_identity i ON im.masterId = i.Id		
ORDER BY cs.ChangeSetId DESC

Na imagem 1 podemos ver o histórico de ChangeSets dentro do Visual Studio e na Imagem 2 vemos como tudo está armazenado dentro do SQL Server.

changeset list
Imagem 1 – Changesets no Visual Studio

changeset query
Imagem 2 – Changesets no SQL Server

Espero que ajude nos seus reports de auditoria.

Abraços e até a próxima.
André Dias