Ausgangssituation
Eine Stärke des Team Foundation Servers ist, dass nahezu alle Aktivitäten an Elementen, sei es versionierter Quellcode oder Work Items, nachvollzogen werden können. Bei den Work Items gibt es dafür die History-Anzeige, die bei den Standard Process Templates in jedem Work Item verfügbar ist.
Möchte man nun den Zustand eines Work Items aus der Vergangenheit sehen, so stellt man schnell fest, dass man zwar im History Feld alle Änderungen nachvollziehen kann, diese jedoch chronologisch aufgelistet sind. Man sieht jedoch lediglich die geänderten Felder, nicht aber die unveränderten. Durch die einzelnen Historieneinträge zu navigieren kann dabei sehr unhandlich sein. Der ganzheitliche Blick auf ein Work Item in der Vergangenheit bleibt verwehrt.
Anwendungsfälle
Hin und wieder kommt es vor, dass man den früheren Zustand eines Work Items sehen möchte. Dies kann vorkommen, wenn man auf frühere Inhalte zurückgreifen möchte, das Work Item jedoch bereits mehrfach in verschiedenen Feldern verändert wurde.
Ein anderer Grund ergibt sich, wenn man zusätzliche Werkzeuge, wie z.B. das mit dem INNOVATIONSPREIS-IT 2014 ausgezeichnete Tool AIT WordToTFS einsetzt. Wenn man zu einem bestimmten Zeitpunkt ein Word-Dokument generiert, so enthält es häufig eine kleine Auswahl an Feldern eines Work Items (siehe Abbildung 1).
Abbildung 1: Work Item im Word Dokument
Wie im Screenshot zu sehen ist, handelt es sich um das Work Item mit der ID 226 in der Revision 6. Im konkreten Beispiel liegt das Work Item im TFS mittlerweile in Revision 7 vor. Um jedoch die anderen Feldwerte des Work Items in der spezifischen Revision 6 zu sehen, benötigt man eine historische Sicht auf diese frühere Revision des Work Items.
Lösung
Bei einer Online-Recherche zu dem Thema findet man viele Anleitungen und nützliche Blog-Posts, wie man die Work Item History über die TFS-API auslesen kann. Wer jedoch nicht selbst programmieren möchte und die damit verbundene Flexibilität nicht benötigt, kann auf eine alternative TFS-Webseite zugreifen. Die gesuchte historische Sicht auf eine spezifische Revision eines Work Items ist nämlich out-of-the-box vorhanden.
Im oben genannten Beispiel von AIT WordToTFS ist die Anzeige auf direktem Wege zu erreichen. Dafür wird die Revisionsnummer als Hyperlink im Word-Dokument angezeigt, über den man direkt zu dieser alternativen TFS-Webseite navigieren kann.
Der Aufruf ist natürlich auch manuell für jedes vorhandene Work Item möglich. Unter dem folgenden URL-Muster lässt sich besagte Webseite aufrufen:
https://<Server>/<TeamProjectCollection>/WorkItemTracking/workitem.aspx?artifactMoniker=<id>&Rev=<revision
Der erste Teil der URL (<Server> und <TeamProjectCollection”">) entspricht der URL der Team Project Collection. <id> muss durch die Work Item ID und <revision> durch die gewünschte Revisionsnummer des Work Items ersetzt werden.
Lässt man den letzten Parameter des Query Strings in der URL weg, so wird die aktuelle Revision des Work Items angezeigt. Mit Angabe des Rev-Parameters kann man die Revision explizit angeben.
Im nachfolgenden Beispiel ist bei einem Work Item das Feld Area Path und dabei die Revision 6 auf die Revision 7 verändert worden (siehe Abbildung 2).
Abbildung 2: Vergleich zweier Work Item Revisionen
In der Abbildung ist rechts die Revision 6 und links die Revision 7 zu sehen. Bei (1) ist die Änderung des Area Paths zu sehen. (2) markiert die Änderung der Revisionsnummer. Alle anderen gelb hervorgehobenen Felder sind die weiteren automatisch veränderten Felder. Alle nicht hervorgehobenen Felder sind in dem Falle unverändert geblieben. Sie werden in dieser Ansicht jedoch auch mit angezeigt. Somit zeigt diese Webseite den kompletten Zustand eines Work Items in einer beliebigen Revision an.
Einschränkungen
Diese Möglichkeit ist keineswegs neu sondern existiert auch schon in früheren TFS Versionen. Jedoch kann man diese Ansicht nicht mit Visual Studio Online benutzen. Dort sieht man folgende Fehlermeldung (siehe Abbildung 3).
Abbildung 3: Fehlermeldung in Visual Studio Online
Eine weitere Einschränkung ergibt sich in Bezug auf Berechtigungen. Ob ein Work Item angezeigt werden kann, wird anhand des aktuellen Zustands eines Work Items entschieden. Im oben verwendeten Beispiel aus Abbildung 2 ist der Area Path in der Revision 7 auf “\FabrikamFiber\Development\Database Team” eingestellt. Wenn ein Benutzer auf diesem Area Path keine Berechtigung zur Anzeige des Work Items hat, so kann er auch den historischen Stand der Revision 6 nicht sehen, obwohl der Area Path in der vorherigen Revision noch auf “\FabrikamFiber\Development\Devices Team” stand, wo der Benutzer berechtigt ist (siehe Abbildung 4).
Abbildung 4: Zugriff verweigert
Zusammenfassung
Mit der oben genannten Webseite hat man eine einfache Möglichkeit einen früheren Zustand eines Work Items auf einen Blick zu erfassen. Die Funktionalität liefert der Team Foundation Server out-of-the-box mit, so dass zunächst kein zusätzlicher Aufwand entsteht. Ist man jedoch mit der Art der Darstellung nicht zufrieden oder kann sich mit den Einschränkungen nicht arrangieren, bleibt dann doch wieder der Griff zur API.
Benötigen Sie dabei Unterstützung, sprechen Sie unsere Experten an.