2012-06-21 6 views
5

Ho scritto una semplice app C# usando SharpSVN per interrogare lo stato di un file prima di tentare un add. Gli esempi che ho visto in vari punti a questo scopo coinvolgono la chiamata del metodo GetStatus di SvnClient, il passaggio del percorso completo e un parametro out a una raccolta di SvnStatusEventArgs.SvnClient.GetStatus (path, args, statuses) restituisce 0 per il file versione?

La mia comprensione è che, per un file, GetStatus deve restituire una raccolta SvnStatusEventArgs con un conteggio esattamente uguale a uno, con uno stato tra NotVersioned, Missing, Normal e così via.

Nella mia applicazione, la mia chiamata a GetStatus in un file sotto controllo origine restituisce un conteggio di raccolta di zero.

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

Il valore di statuses.Count è pari a zero, quando mi aspetto 1 con [0] valore .LocalContentStatus di normale stati. Questa aspettativa è errata? Per una chiamata a un percorso che fa riferimento a un file non nel controllo del codice sorgente, la chiamata funziona con un valore di stato [0] .LocalContentStatus di NotVersioned.

Il percorso è verificato come una copia di lavoro e il file Program.cs è, infatti, inserito in Subversion. Sono in esecuzione SharpSVN versione 1.7005.2163.13448 e VS2010.

Mille grazie in anticipo per aver chiarito la mia evidente confusione.

EDIT Altre informazioni: Dopo aver modificato, ma non eseguito, Program.cs, questo stesso snippet di codice ora restituisce un singolo valore di stato con LocalContentStatus di "Modified". Dopo aver eseguito il commit del file, viene restituito il comportamento originale (nessun valore di stato restituito).

+2

.Status() e .GetStatus() restituiscono solo nodi di stato "interessanti". Puoi fare in modo che restituisca tutti i nodi impostando .RetrieveAllEntries sull'oggetto args. –

+0

Queste sono ottime informazioni, Bert. Lo proverò e consiglierò alla mia prossima occasione. –

risposta

5

Ci scusiamo per il ritardo nell'invio della risposta sulla base del feedback di Bert Huijben. Sto postando la risposta qui solo FYI a beneficio di tutti.

La modifica della chiamata GetStatus originale per impostare la proprietà RetrieveAllEntries dell'oggetto SvnStatusArgs ha, infatti, risolto questo problema e provoca copie locali (ma non interessanti :)) di file con un conteggio dello stato di ritorno pari a 1, con un .LocalContentStatus di "Normal", come desiderato.

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

Molte grazie.

+0

Significa 'RetrieveAllEntries'. – AbleArcher

Problemi correlati