Blog

Umgehen Sie jetzt die kommerziellen Funktionen von OpsHub VSO Migration Utility

Jesse Houwing

Jesse Houwing

Aktualisiert Oktober 22, 2025
2 Minuten
OpsHub bietet ein relativ einfaches Tool, mit dem Sie Ihre Work Items und Versionskontrolldaten von einem lokalen TFS-Server zu Visual Studio Team Services migrieren können. Vor kurzem wurde Version 2.0 veröffentlicht, die eine Reihe von Verbesserungen mit sich bringt. Leider wurden in dieser neuen Version auch einige der Funktionen entfernt, die zuvor kostenlos waren, und in eine kommerzielle Zwischenversion zwischen der kostenlosen und der vollwertigen Version von OpsHub Integration Manager verschoben.
Für mich gibt es hier einige Schwachstellen. Punkt 21, die Migration des tatsächlichen Benutzers, der die Änderung vorgenommen hat, war früher Teil der kostenlosen Version, die teilweise Benutzeridentität ist neu. In der kostenlosen Version werden keine Informationen über den ursprünglichen Check-in mehr angezeigt. Nichts. Stattdessen sehen Sie:
Eingecheckt von: VSO-MIGRATION BENUTZER
Mein Checkin-Kommentar
ursprünglich eingecheckt von: tfsuser, am: 2014-10-09 14:12:00 GMT
Sie erhalten jetzt einfach:
Eingecheckt von: VSO-MIGRATION BENUTZER
Mein Checkin-Kommentar
Ich finde es etwas seltsam, dass ich immer noch aufgefordert werde, die Benutzerzuordnung vorzunehmen. Diese Daten werden bei einer reinen Versionskontrollmigration völlig ignoriert.
Es gibt zwar andere Funktionen der kommerziellen Version, die nett sind, vor allem bei der Migration von Arbeitselementen, aber was die Versionskontrolle angeht, ist das für mich ein absolutes No-Go für die kostenlose Version. Leider hat mir OpsHub $5000 + $1750 pro Teamprojekt angeboten, um die kommerziellen Funktionen freizuschalten. Für meinen Kunden, der eine Menge Projekte erstellt hat, die er behalten möchte, würde das fast $20.000 bedeuten.
Glücklicherweise ist der Check-in-Kommentar serverseitig veränderbar. Anstatt OpsHub zu veranlassen, den Kommentar zum Zeitpunkt des Check-in zu ändern, können Sie tatsächlich alle Changesets ändern und sie mit diesen Informationen vor der Konvertierung aktualisieren. Bei Bedarf können Sie sie auch nachträglich mit einer cleveren Regex wieder entfernen.
mit System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.TeamFoundation.Client; using Microsoft.TeamFoundation.VersionControl.Client; namespace TfsChangesetCommentEnricher { class Program { static void Main(string[] args) { var collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection( new Uri("https://jessehouwing:8080/tfs/defaultcollection")); var vcs = collection.GetService<VersionControlServer>(); var changes = vcs.QueryHistory(new ItemSpec("$/", RecursionType.Full)); foreach (var change in changes) { if (!change.Comment?.Contains("rnrn-- rnOriginally checked-in") ?? true) { change.Comment = string.Format( CultureInfo.InvariantCulture, @"{0} -- Ursprünglich eingecheckt * von: {1} ({2}) * am: {3:u} * in: {5} * id: {4}", change.Comment, change.Committer, change.CommitterDisplayName, change.CreationDate, change.ChangesetId, change.VersionControlServer.TeamProjectCollection.Uri); change.Update(); } } } } }
Dadurch hat mein Kunde gerade $20.000 gespart. Wenn diese Informationen in den Kommentaren verfügbar sind, wäre auch eine Konvertierung der Etiketten möglich. Zum Glück verwendet mein Kunde diese nicht oft.

Verfasst von

Jesse Houwing

Jesse is a passionate trainer and coach, helping teams improve their productivity and quality all while trying to keep work fun. He is a Professional Scrum Trainer (PST) through Scrum.org, Microsoft Certified Trainer and GitHub Accredited Trainer. Jesse regularly blogs and you'll find him on StackOverflow, he has received the Microsoft Community Contributor Award three years in a row and has been awarded the Microsoft Most Valuable Professional award since 2015. He loves espresso and dark chocolate, travels a lot and takes photos everywhere he goes.

Contact

Let’s discuss how we can support your journey.