Hallo zusammen
Ich arbeite an einer Automatisierung per TFS-API. Dabei geht es um einen Ordner der Unterordner und Dateien enthält.
Diese Inhalte werden einmal initial eingecheckt. Anschliessend wird der Inhalt es lokalen Ordners gelöscht und die Inhalte neu hineingeschrieben. Dabei kommt es vor, das Dateien die vorher enthalten waren, jetzt nicht mehr vorhanden sind.
Diese lokal gelöschten Dateien sollten jetzt irgendwie erkannt werden und auf dem Server dann gelöscht werden.
In SVN oder anderen Systemen gibt es sogenannte "missing files", mit denen dann etwas angefangen werden kann. Im TFS scheint so etwas nicht zu existieren.
Meine Frage dabei ist, ob es eine Möglichkeit ist, lokal gelöschte Dateien (und Ordner) per TFS-API zu erkennen und dem Server dann mitzuteilen, das diese gelöscht werden sollen.
Hintergrund ist folgendes:
Ich generiere aus dem SQL Server Create-Scripte für alle Objekte in einen Ordner und möchte so automatisch eine Art History im TFS ablegen.
Wenn jetzt ein Objekt im SQL Server entfernt wird, wird das Script dann auch nicht mehr generiert.
Da ich nicht explizit etwas lösche, kann ich auch nicht einfach per API ein Delete absetzen. Ich müsste das Vorher-Nachher vergleichen, um dies anzustellen.
Vielleicht gibt es ja auch eine andere Möglichkeit mein Ziel zu erreichen.
Hat jemand dazu eine Idee?
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
Hallo zusammen
Die Lösung war vom "Server Workspace" auf "Local Workspace" umzuschalten. So verhält sich der TFS näher an GIT / Mercurial und erkennt lokale Änderungen, ohne explizites Löschen per Source Control Explorer oder VS.
Die Änderungen müssen dann zuerst noch promoted werden, damit man sie einchecken kann.
Der Code um zu promoten:
PendingChange[] candidates;
workspace.GetPendingChangesWithCandidates(
new ItemSpec[] { new ItemSpec(@"C:\Local\Path", RecursionType.Full) },
false,
out candidates);
foreach (PendingChange pc in candidates)
{
if ((pc.ChangeType & ChangeType.Delete) == ChangeType.Delete)
{
workspace.PendDelete(pc.LocalItem);
}
else if ((pc.ChangeType & ChangeType.Add) == ChangeType.Add)
{
workspace.PendAdd(pc.LocalItem);
}
else
{
workspace.PendEdit(pc.LocalItem);
}
}
PendingChange[] changes = workspace.GetPendingChanges();
/* Now you can review and CheckIn your changes. */
Folgend das Posting mit der Antwort auf Stackoverflow:
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011