Eines unserer intern geschriebenen Werkzeuge wird mit einer cvs-commit-Spur des Formulars gefüttert:
%Vor% Das Tool erfasst dann die Datei von cvs, indem es in einem Arbeitsverzeichnis einen Befehl cvs update -r 1.1.2.56
absetzt, der bereits einen bestimmten Codezweig ausgecheckt hat.
Diese Befehle funktionieren ordnungsgemäß, wenn eine vorhandene Version von AFile.java im Arbeitsverzeichnis vorhanden ist. Aber wenn wir eine Spur einer Datei erhalten, die keine Version im Arbeitsverzeichnis hat, kann der Befehl die Datei nicht erfassen.
Gibt es eine Möglichkeit, es zu tun?
Es ist nicht klar, was Ihr endgültiges Ziel ist: das gesamte Repository in den gewünschten Zustand zu bringen (ausgewählte Revision der ausgewählten Zweigstelle) oder die einzelne Datei aus dem Repository zur weiteren Verarbeitung zu übernehmen. Ich nehme an, es ist letzteres.
Dann brauchen Sie diesen Befehl:
%Vor%Dies wird zur festgelegten Ausgabe der angegebenen Datei (oder der Dateien) ausgeben, die in den temporären Speicherort umgeleitet und verarbeitet werden könnte.
Oder Sie könnten verwenden:
%Vor%, das ein (Teil des) Repositorys in das angegebene Zielverzeichnis exportiert.
Ich habe es wie unten beschrieben versucht
%Vor%Es gab Fehler wie
%Vor%So habe ich als unten Weg gemacht
%Vor%Jetzt hat es gut funktioniert.
Eine Lösung bestünde darin, das Tool so zu ändern, dass ein "cvs co" für die Datei ausgegeben wird, wobei die Revision so angegeben wird, wie sie jetzt mit dem Update ist. Der Checkout-Befehl müsste von oben in der Baumstruktur ausgeführt werden, nicht in dem Verzeichnis, das die Datei enthält. Ich bin auf ähnliche Fälle gestoßen, in denen das Update keine neue Datei finden kann und eine Überprüfung der Datei erfordert, wie ich es beschrieben habe.
Tags und Links command-line version-control cvs