Heut habe ich mir die Änderungen bezüglich branching und merging des kommenden Releases von Visual Studio und Team Foundation Server angesehen. Dafür habe ich ein altes Projekt zum TFS hinzugefügt und 2 Branches erstellt:
Wie man dem obigen Screenshot entnehmen kann, sind mit dem neuen Release nun Branches mit speziellen Icons versehen. Vor dem erstem Branchen sollte man jedoch den initialen Zweig extra in einen Branch konvertieren (erst dann sieht man das Icon und Changeset-Tracking ist möglich):
Ist dies getan, kann man nun z.Bsp. auf einzelne Changesets ein Tracking aktivieren. D.h. man kann nachvollziehen in welche Branches das Changeset gemerged wurde. In meinem Beispiel hab ich im Branch "SerializerTest" drei Changesets erzeugt und mache nun ein "View History" auf den Branch wo man bei jedem Changeset die Möglichkeit hat dieses zu tracken:
Man kann dort nun wählen an welchen Branches man interessiert ist und sieht in der Grafik rechts auch gleich deren Abhängigkeiten:
Man wird danach in den Timeline View geleitet, wo man sieht wann das Changeset (hier das Changeset 84) in welchen Branch gemerged wurde. Über den mit einen Pfeil markierten Toolbarbutton gelangt man in den "Hierarchy View" in dem man sehr schön sieht wie die Bäume von einander abhängig sind.
| Timeline View | Hierarchy View
|
| |
Man sieht, dass dieses Changeset noch nicht in die 2 anderen Branches gemerged wurde. In beiden Views hat man die Möglichkeit mit einem Rechtsklick auf das Changeset, dieses in einen anderen Branch zu mergen:
Nach dem Mergen in den Trunk ändern sich die Grafiken der beiden Views entsprechend:
| Timeline View | Hierarchy View
|
| |
Nach dem Merge in den finalen Freischaltungs Branch sieht es dann so aus:
| Timeline View | Hierarchy View
|
| |
Ein Blick auf die History der gemergten Datei im FirstRelease Branch zeigt, dass die History nun auch in der Lage ist die Branchvorgänge abzubilden:
Aber das war noch nicht alles, die für mich sinnvollste Sache ist, dass man das Tracking auch auf Workitemebene aktivieren kann. D.h. wenn man mehrere Checkins einem Workitem zugewiesen hat, kann man nach verfolgen welche Changesets sich in welchen Branches befinden und welche noch fehlen. Dazu kann man mit einem Klick auf "Track Work Item" die zuvor dargestellten Ansichten für alle Changesets anzeigen lassen die dem Workitem zugewiesen sind:
Hier die beiden Ansichten:
| Timeline View | Hierarchy View
|
| |
Soweit ich es sehe, sind Branches die hier grün hinterlegt sind vollständig gemerged, heißt alle Changesets sind in diesem Branch vorhanden. Branches die orange hinterlegt sind fehlt mind. 1 Changeset. Dem Aufmerksamen Leser sollte nun auffallen, dass in der Grafik oben im Text "Changset 84,85,86" steht, jedoch ist vom Changeset 86 nichts in beiden Grafiken zu sehen. Entweder versteh ich das Feature nicht komplett oder das Feature ist einfach noch buggy. Ich tippe darauf, dass das Feature noch buggy ist. Ich habe zum Testen das Changeset 86 vom Workitem entfernt, dann hätte eigentlich der Trunk-Branch auch grün sein müssen, war er jedoch auch nicht. Hier scheint noch etwas Nacharbeit nötig zu sein.
Man kann übrigens auch einfach per Drag & Drop ein Changeset von einem Branch in den anderen mergen, einfach ein Changeset in einen der beiden Views markieren und in den gewünschten Branch ziehen. Übrigens der Merge-Dialog ist nun nicht mehr modal und wurde in die Pending Chanages integriert und heißt dort nun "Pending Changes - Conflicts". Dateien die nicht automatisch gemerged werden konnten schlagen nun dort auf und man hat wesentlich mehr Möglichkeiten als vorher und bekommt auch wesentlich mehr Informationen zu den Problem geboten:
Leider hatte ich bei diesem einfachen Szenario keine Konflikte zu bewältigen, deshalb kann ich hier kein Beispiel zeigen. Dafür erstelle ich eventuell später noch ein extra Post.
Das war nun ein kleiner Ausblick was uns in Zukunft in Sachen Branching und Merging erwartet. Ich find die Änderungen super, da man nun viel besser verfolgen kann, welche Änderungen sich wo befinden.