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.