Ich versuche, unsere Build-Skripts von SourceSafe zu TFS zu ändern, ohne MsBuild (noch) zu verwenden.
Ein Problem besteht darin, dass das Arbeitsbereichsverzeichnis von den Skripts umbenannt und archiviert wird, wodurch TFS denkt, dass es keine Dateien abrufen muss. Selbst mit dem Flag / force werden nur die Verzeichnisse abgerufen, ohne die Quelldateien zu erhalten.
Ich verwende derzeit
%Vor%Um mir die Verwaltung von Arbeitsbereichen in den Skripts oder die Verwendung von Zwischenverzeichnissen zu ersparen, kennt jemand einen Befehl, der Verzeichnisse und Code abrufen kann, ohne einen Arbeitsbereich zu benötigen?
Es ist nicht möglich, tf get
ohne Arbeitsbereich auszuführen. Der Grund ist, dass der Server die Zuordnung zwischen den Serverpfaden und den lokalen Pfaden kennen muss.
Wenn Sie mit einer großen Anzahl von Dateien arbeiten, ist es keine gute Idee:
Der Grund dafür ist, dass der Server bei jeder Ausführung von Get
verfolgt, welche Dateien welche Versionen in welchen Arbeitsbereich heruntergeladen wurden. Wenn Sie diese Arbeitsbereiche nie bereinigen, wird die Tabelle, in der diese Informationen gespeichert sind, mit der Zeit größer.
Zusätzlich, wenn Sie & amp; Wenn Sie einen Arbeitsbereich ständig löschen, muss der Server alle diese Zeilen schreiben und sie dann löschen, wenn Sie fertig sind. Das ist unnötig.
Sie sollten wirklich versuchen, den gleichen Arbeitsbereich jedes Mal wiederzuverwenden. Wenn Sie dies tun, ist der Server sehr effizient, wenn Sie nur Dateien senden, die sich seit dem letzten Download geändert haben. Selbst wenn sich Ihr Build von einem Zweig zum anderen bewegt, können Sie tf get /remap
verwenden, was manchmal effizienter ist, wenn die Zweige gemeinsame Dateien teilen.
Obwohl es Ihr Problem nicht löst, ist es möglich, Dateien aufzulisten und Dateien ohne Arbeitsbereich herunterzuladen.
Um Dateien aufzulisten:
%Vor%So laden Sie eine Datei herunter:
%Vor% Mit einer Creative-Batchdatei können Sie diese beiden zusammen mit einem FOR
-Befehl zeichnen. Ich würde jedoch empfehlen, zuerst Ihr Workspace-Problem zu lösen, da TFS so verwendet werden sollte.
Ein Arbeitsbereich ist eine Zuordnung zwischen dem Speicherort des Quellrepositorys und dem Speicherort des Dateisystems. Sie können also nicht davon ausgehen, keinen Arbeitsbereich zu verwenden. Aber Sie können einen Arbeitsbereich bei Bedarf einfach einrichten und abbauen.
Hier ist eine einfache TFS-Aufgabe, die ich benutze, um meine Datenbankquelldateien von TFS zu holen, bevor ich einige Textsubstitutionen durchführe und sie zu einem Datenbankaktualisierungspaket zusammenfüge. Sie können dies einfach in jede Syntax übersetzen, die Ihre aktuellen Build-Skripte erfordern:
%Vor%TFS ist Ihr Quell-Repository, aber Sie haben nicht explizit erwähnt, wofür Ihre Build-Skripte entwickelt wurden. Sie sollten sie wirklich zu einem TFS-Build-Skript migrieren, dann können Sie Ihren Build vereinfachen, zum Beispiel müssen Sie sich keine Gedanken über die Zuordnung von Arbeitsbereichen oder den neuesten Quellcode machen, da TFS das für Sie erledigt beliebige benutzerdefinierte Build-Schritte und möglicherweise Archivierung Ihrer Build-Ergebnisse.
Neno Loje hat ein kleines Dienstprogramm, das genau das tut, was Sie brauchen . Zum Booten können Sie auch alle Quellcode-Kontrollbindungen aus der Projekt- und Projektdatei entfernen, falls Sie diese benötigen.
C # hat die VersionControlServer-Bibliothek und Sie können VersionControlServer verwenden. GetItems Aufruf zum Abrufen von TFS Element . Wenn der ItemType File ist, rufen Sie DownloadFile auf, um die Datei abzurufen.
Ich weiß nicht, warum deine Buildscripts die Arbeitsbereichsverzeichnisse jedes Mal löschen. Aber um Ihre Frage zu beantworten, glaube ich nicht, dass Sie Quellcode von TFS ohne einen Arbeitsbereich erhalten können. Vielleicht können Sie versuchen, einen Wortraum vor jedem zu schaffen. Der Befehl ist
%Vor%Sie können dies leicht mit SourceSafe tun: Holen Sie sich eine beliebige Version in ein bestimmtes Verzeichnis. Und es war sehr oft sehr praktisch. Es gibt oft Gelegenheiten, warum man das machen möchte. Schande (wenn) TFS unterstützt es nicht, es ist eine fehlende Funktionalität, imho.