2012-06-21 4 views
5

Ich habe eine einfache C# -App geschrieben, die SharpSVN verwendet, um den Status einer Datei vor einem Hinzufügen abzufragen. Die Beispiele, die ich an verschiedenen Stellen für diesen Zweck gesehen habe, beinhalten den Aufruf der GetStatus-Methode des SvnClient, die Übergabe des vollständigen Pfades und eines out-Parameters an eine Sammlung von SvnStatusEventArgs.SvnClient.GetStatus (Pfad, Argumente, Status) gibt 0 für versionierte Datei zurück?

Mein Verständnis ist, dass GetStatus für eine Datei mit einer SvnStatusEventArgs-Auflistung mit einer Zählung von genau eins zurückgeben sollte, mit einem Status zwischen NotVersioned, Missing, Normal und so weiter.

In meiner Anwendung gibt mein Aufruf von GetStatus an eine Datei unter Quellcodeverwaltung eine Collection-Anzahl von Null zurück.

 SvnClient foo = new SvnClient(); 
     Collection<SvnStatusEventArgs> statuses; 
     foo.GetStatus("C:\\Temp\\svnu\\Program.cs", new SvnStatusArgs {Depth = SvnDepth.Empty}, out statuses); 

Der Wert von statuses.Count Null ist, wenn ich 1 mit einem Status erwarten [0] .LocalContentStatus Wert von Normal. Ist diese Erwartung falsch? Für einen Aufruf eines Pfads, der auf eine Datei nicht in der Quellcodeverwaltung verweist, arbeitet der Aufruf mit einem Status [0] .LocalContentStatus Wert von NotVersioned.

Der Pfad wird als Arbeitskopie verifiziert, und die Datei Program.cs wird tatsächlich in Subversion eingetragen. Ich benutze SharpSVN Version 1.7005.2163.13448 und VS2010.

Vielen Dank im Voraus für die Aufklärung meiner offensichtlichen Verwirrung.

BEARBEITEN Einige weitere Informationen: Nach dem Ändern, aber nicht Commit, Program.cs, gibt das gleiche Code-Snippet jetzt einen einzigen Statuswert mit LocalContentStatus von "Modified" zurück. Nach der Übergabe der Datei wurde das ursprüngliche Verhalten (kein zurückgegebener Statuswert) zurückgegeben.

+2

.Status() und .GetStatus() geben nur 'interessante' Statusknoten zurück. Sie können festlegen, dass alle Knoten zurückgegeben werden, indem Sie .RetrieveAllEntries für das Objekt args festlegen. –

+0

Das sind tolle Infos, Bert. Ich werde das versuchen und bei meiner nächsten Gelegenheit beraten. –

Antwort

5

Entschuldigung für die Verspätung, die Antwort basierend auf Bert Huijbens Feedback zu bekommen. Ich schreibe die Antwort hier nur zum Wohle aller.

Durch das Ändern des ursprünglichen GetStatus-Aufrufs zum Festlegen der RetrieveAllEntries-Eigenschaft des SvnStatusArgs-Objekts wurde dieses Problem gelöst, und lokale (aber uninteressante :) Kopien von Dateien weisen eine Rückgabestatuszählung von 1 auf .LocalContentStatus von "Normal", wie gewünscht.

foo.GetStatus("C:\\Temp\\svnu\\Program.cs", new SvnStatusArgs {Depth = SvnDepth.Empty, 
                   RetrieveAllEntries = true}, out statuses); 

Vielen Dank.

+0

Sie meinen 'RetrieveAllEntries'. – AbleArcher

Verwandte Themen