2012-06-21 17 views
5

He escrito una aplicación C# simple usando SharpSVN para consultar el estado de un archivo antes de intentar agregarlo. Los ejemplos que he visto en varios lugares para este propósito implican llamar al método GetStatus del SvnClient, pasando la ruta completa y un parámetro de salida a una colección de SvnStatusEventArgs.SvnClient.GetStatus (path, args, status) devuelve 0 para el archivo versionado?

Según tengo entendido, para un archivo, GetStatus debería devolver con una colección SvnStatusEventArgs que tenga un recuento de exactamente uno, con un estado entre NotVersioned, Missing, Normal, y así sucesivamente.

En mi aplicación, mi llamada a GetStatus a un archivo bajo control de origen devuelve un recuento de Colección de cero.

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

El valor de statuses.Count es cero, cuando estoy esperando 1 con un estatus [0] .LocalContentStatus valor de la Normal. ¿Es esta expectativa incorrecta? Para una llamada a una ruta que hace referencia a un archivo no en control de fuente, la llamada funciona con un valor de estado [0] .LocalContentStatus de NotVersioned.

La ruta se verifica como una copia de trabajo, y el archivo Program.cs, de hecho, se enlistó en Subversion. Estoy ejecutando SharpSVN versión 1.7005.2163.13448 y VS2010.

Muchas gracias de antemano por aclarar mi confusión obvia.

EDITAR algo más de información: Tras la modificación, pero no cometer, Program.cs, este mismo fragmento de código devuelve ahora un valor de estado individual con LocalContentStatus de "Modificado". Después de confirmar el archivo, se devuelve el comportamiento original (sin valor de estado devuelto).

+2

.Status() y .GetStatus() solo devuelven nodos de estado 'interesantes'. Puede hacer que devuelva todos los nodos configurando .RetrieveAllEntries en el objeto args. –

+0

Esa es una gran información, Bert. Lo intentaré y aconsejaré en mi próxima oportunidad. –

Respuesta

5

Disculpas por el retraso en la publicación de la respuesta según los comentarios de Bert Huijben. Estoy publicando la respuesta aquí solo para tu información.

Al modificar la llamada GetStatus original para establecer la propiedad RetrieveAllEntries del objeto SvnStatusArgs, de hecho, se solucionó este problema y se hicieron copias locales (pero poco interesantes :) de los archivos para tener un recuento de estado de retorno de 1, con .LocalContentStatus de "Normal", como se desee.

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

Muchas gracias.

+0

Quiere decir 'RetrieveAllEntries'. – AbleArcher