Simone lo aveva annunciato l’11 Agosto, ma ero a godermi il sole della Puglia, così ho aspettato oggi (primo gg in cui sono riuscito a trovare un po’ di tempo) per fare l’aggiornamento del blog engine alla versione 2.0 di Subtext.
Direttamente dal Post di Simone, ecco le principali novità:
In questo post, vengono inoltre citati altri piccoli (ma comodi) miglioramenti apportati.
Per l’aggiornamento, vi consiglio di seguire direttamente la guida ufficiale.
In tutto, mi ci è voluta un oretta tra dowload, ftp, configurazione, spostamento di immagini, skinn custom etc., ma tutto ha funzionato senza il minimo intoppo.
Se navigando sul blog doveste riscontrare qualche problema, contattatemi
.
Enjoy 
Nel precedente post, ho mostrato come visualizzare i check-in eseguiti su TFS skippando le regole impostate. Subito dopo, Lorenzo e Janky mi hanno fatto notare nei commenti che si deve evitare di leggere/scrivere direttamente sul Data Base di TFS.
Team Foundation Server, come noto, espone un Object Model molto evoluto che, in sostanza, permette di farci qualsiasi cosa. Ed in effetti, è bastata un oretta per raggiungere praticamente lo stesso risultato con poche righe di codice:
1: using System;
2: using System.Collections;
3: using Microsoft.TeamFoundation.Client;
4: using Microsoft.TeamFoundation.VersionControl.Client;
5:
6: namespace TFSTest {
7: class Program {
8: static void Main(string[] args) {
9: ICredentialsProvider provider = new UICredentialsProvider();
10: TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("mig-server", provider);
11: tfs.Authenticate();
12: VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));
13: IEnumerable changesets = vcs.QueryHistory("$/TestProject", VersionSpec.Latest, 0, RecursionType.Full, null, null, null, int.MaxValue, false, false);
14: foreach (Changeset changeset in changesets) {
15: if (changeset.PolicyOverride.PolicyFailures.Length > 0) {
16: Console.WriteLine(
17: "Changeset ID:\t{0}:{1}\r\nDate:\t\t{2}\r\nOwner:\t\t{3}\r\nComment:\t\"{4}\"\r\n",
18: changeset.ChangesetId,
19: changeset.Comment,
20: changeset.CreationDate,
21: changeset.Owner,
22: changeset.PolicyOverride.Comment);
23: }
24: }
25: Console.ReadLine();
26: }
27: }
28: }
In particolare, dopo aver eseguito la connessione al TFS, si recupera l’istanza del version control di cui viene invocato il metodo QueryHistory il cui scopo è quello di
“Retrieves an enumerable collection of changesets matching the specified items and versions.”
Fatto questo, prendiamo tutti i changeset con almeno una PolicyFailures ed il gioco è fatto:
Changeset ID: 35:Check In di Test
Date: 30/08/2008 1.48.51
Owner: Mighell
Comment: "Test Policy Failure comment"
Changeset ID: 34:Check In di Test
Date: 30/08/2008 01.28.27
Owner: Mighell
Comment: "Policy Skippata"
In conclusione, sebbene trovi più comoda la query del post precedente e sono ASSOLUTAMENTE D’ACCORDO sul fatto che NON SI DEVE SCRIVERE DIRETTAMENTE SUL DATA BASE DI TFS (ma nemmeno una letturina????
), concordo sul fatto che se esiste un object model, è cosa buona e giusta usarlo
(specie per un discorso relativo alle permission).
Un ringraziamento va a Lorenzo e Janky per la segnalazione
.
Technorati Tags:
TFS,
check-in policy