2011-11-28 42 views
7

Soy nuevo en TFS y necesito escribir una consulta TSQL para obtener una lista de todos los archivos y números de versión que se incluyeron en un número de versión de conjunto de cambios en particular. Al buscar en línea las tablas para obtener esta información, encontré que algunas personas mencionaron usar la base de datos Tfs_Warehouse y otras que usaban la base de datos Tfs_DefaultCollection. Tengo las siguientes preguntas:TFS Lista de todos los archivos y números de versión con un conjunto de cambios particular

  • ¿Cuál es la diferencia entre las dos bases de datos?
  • ¿Por qué usarías una en lugar de la otra?
  • ¿Qué tablas usa para obtener la información de archivo/versión para un conjunto de cambios en particular?
+0

1 para una pregunta bien escrito. Supongo que sabe que puede obtener esta información de Visual Studio al buscar en Historial y luego ver los Detalles del conjunto de cambios. Pero supongo que desea recuperar esto programáticamente para algún otro propósito. –

+1

¿Está abierto a escribir una aplicación .NET para consultar esto? Consultar la base de datos SQL directamente no es compatible. –

+0

Eso es correcto, necesito hacerlo programáticamente. Si el método TSQL no es compatible, ¿hay alguna manera de hacerlo utilizando el código VB.Net? – user1070202

Respuesta

2

Puede usar el VersionControlServer.GetChangeset() method del Modelo de objetos TFS.

Usted tendrá que añadir referencias a los siguientes ensamblados en la GAC:

  • Microsoft.TeamFoundation.Common
  • Microsoft.TeamFoundation.Client
  • Microsoft.TeamFoundation.VersionControl.Client

    Private Shared Sub Main(ByVal args As String()) 
        Dim tfs As TfsTeamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(New Uri("http://tfsserver:8080/tfs/CollectionName"), New UICredentialsProvider) 
        tfs.Connect(ConnectOptions.None) 
        Dim vcs As VersionControlServer = tfs.GetService(Of VersionControlServer) 
        Dim changeset As Changeset = vcs.GetChangeset(changeset ID, True, False) 
    End Sub 
    

Entonces usted puede i nspeccione la propiedad .Changes para ver todos los cambios incluidos en el conjunto de cambios.

0

¿tf.exe changeset no proporciona la información que desea? Tiene muchas opciones ...

+0

Necesito hacerlo programáticamente, por lo tanto a través de una consulta TSQL o desde dentro de VB.Net. – user1070202

+0

No hay nada que te impida llamar 'tf.exe' programáticamente y analizar el resultado. Por supuesto, si * quiere * aprender la API de TFS, entonces, por supuesto, adelante ... – AakashM

9

Si usted está buscando para obtener estos datos de la base de datos SQL Server, aquí es una consulta para que pueda empezar:

SELECT 
    chg_set.CreationDate, 
    chg_set.ChangeSetId, 
    v.FullPath 
FROM dbo.tbl_ChangeSet (nolock)AS chg_set 
    INNER JOIN dbo.tbl_Version (nolock)AS v ON chg_set.ChangeSetId = v.VersionFrom 
    LEFT OUTER JOIN dbo.tbl_File (nolock) AS f ON v.FileId = f.FileId 
WHERE (chg_set.ChangeSetId = [Your changeset ID]) 
ORDER BY chg_set.CreationDate, v.FullPath 

Fuente: http://www.isosoft.org/taoffi/post/2012/05/22/TFS-database-pause-Change-set-quantitative-statistics-sample.aspx

+0

¿Por qué debería consultar la base de datos directamente en lugar de pasar por el modelo de objetos? –

+0

Supongo que mi razón principal es "porque puedes". Entiendo totalmente que ustedes no quieren que la gente pierda el conocimiento en el DB, y oficialmente no es compatible, pero la realidad es que es una opción. No recomiendo jugar en el DB si no está cómodo, pero para mí, esta es la forma más fácil y mejor de obtener resultados en ciertos casos. – Matt

+0

Bastante justo. Solo curiosidad, de verdad. Si yo fuera un chico de DB entonces podría estar más tentado. (Pero soy lamentablemente pobre con el SQL.) –

Cuestiones relacionadas