Branching in TFVC

In Microsoft TFS kann man zwei Versionsverwaltungssysteme nutzen: TFVC (default&easy) und Git. In TFVC hat jeder Branch eine eigene nachbarliche Ordnerstruktur. Git basiert auf dem Resository und im Dateisystem werden nur Dateien und Ordner angezeigt, deren Branch gerade aktiv ist (immer nur einer). Es ist bei TFVC leicht mit den Branches durcheinander zu kommen, weil man immer auch Projekte des anderen Branches referenzieren kann. Bei Git geht das eben nicht.

Mindestens für TFVC gilt: don’t branch, when you don’t need it (https://app.pluralsight.com/library/courses/devops-skills-developers-visual-studio-tfs-2015/table-of-contents -> Branching risks)

Mergen

Was man gebrancht hat, will man irgendwann auch wieder mergen – außer bei einem Fork. Automerging ist nicht trivial – komplexe Algorithmen stecken da dahinter. Hier ist bei TFVC auch tatsächlich bzgl. XML-Dateien noch ein bisschen Nachholbedarf.

Im Sourcecode-Explorer auf den Quellbranch gehen, rechtsklicken -> „Branchen und Zusammenführen“ -> Branch. Dann Einchecken-Button klicken. Die meisten Diffs werden automerged. Bei einigen Diffs kann der Algorithmus jedoch nicht entscheiden, welches die richtige Version ist. Hier können sich Konflikte ergeben, die dadurch gekennzeichnet sind, dass die betreffenden Zeilen in brauner Hintergrundfarbe angezeigt werden. Diese gilt es mit dem Mergetool manuel zu mergen. Hierbei ist häufig Hirnschmalz notwendig – man muss den Code fachlich verstehen, um die richtige Version zu wählen. Ein Merge-Fallbeispiel: Großer Codeblock aus dem Main-Branch und kleiner Codesnippet von mir. Ich kann dann im Coderesultat noch individuell mein Codesnippet einfügen. Nachdem alle Konflikte behoben sind, bewirkt der Einchecken-Button tatsächlich ein Einchecken.