SharpSVN: el command GetList omite Uris si se filtra por revisión

Estoy usando SharpSvn.1.7-x64.1.7010.2403 (provisto por NuGet) en un proyecto de Consola .NET 4.0. El command svn list lo uso con frecuencia:

Collection<SvnListEventArgs> list; client.GetList(new SvnUriTarget("https://dev:8443/svn/test/"), out list); Console.WriteLine("Name |Path |Uri |RepositoryRoot"); Console.WriteLine("-------------------------------------------------------------------------------------------------------"); foreach (var item in list) Console.WriteLine("{0,-16}|{1,-16}|{2,-42}|{3,-20}", item.Name, item.Path, item.Uri, item.RepositoryRoot); 

Eso produce lo siguiente:

 Name |Path |Uri |RepositoryRoot ------------------------------------------------------------------------------------------------------- | |https://dev:8443/svn/test/ |https://dev:8443/svn/test/ IAmImportant.txt|IAmImportant.txt|https://dev:8443/svn/test/IAmImportant.txt|https://dev:8443/svn/test/ Properties.txt |Properties.txt |https://dev:8443/svn/test/Properties.txt |https://dev:8443/svn/test/ sub |sub |https://dev:8443/svn/test/sub/ |https://dev:8443/svn/test/ 

Últimamente descubrí el siguiente comportamiento misterioso: utilizando un filter de revisión ya no obtengo Uri 🙁

 client.GetList(new SvnUriTarget("https://DEV:8443/svn/test/"), new SvnListArgs { Revision = SvnRevision.Head }, out list); 

Salida:

 Name |Path |Uri |RepositoryRoot ------------------------------------------------------------------------------------------------------- | | | IAmImportant.txt|IAmImportant.txt| | Properties.txt |Properties.txt | | sub |sub | | 

¿Es eso un error? Si no es un error, ¿alguien puede explicar por qué? ¿Cómo se puede solucionar (con suerte sin llamar a la información de svn en cada elemento)?

El valor .RepositoryRoot realmente no es proporcionado por la API de Subversion. SharpSvn sabe que, en la mayoría de los casos, se puede calcular a partir del primer valor de salida del argumento de list, excepto en esta situación específica en la que pasa una revisión operativa.

Tenga en count la diferencia entre svn list URL -r 123 y svn list URL @ 123. El primero examina la URL tal como se la conoce en la revisión del encabezado y rastrea su origen hasta la revisión 123 en la que podría haber existido con un nombre diferente. El segundo revisa lo que estaba en la URL en la revisión 123. (En caso de duda, lo más probable es que desee la segunda forma … Consulte el libro de subversión para get más detalles)

Esta segunda forma se maneja como SvnClient.List (nueva SvnUriTarget (uri, pegrev), …) y allí el cálculo funciona.

El Uri se forma luego combinando el conocimiento de RepositoryRoot y Path. (Usted puede hacer todo esto usted mismo si tiene el RepositoryRoot en alguna parte. Pero recuperar este valor sin conocimiento externo es todo un éxito de performance. Esa es la razón por la que SharpSvn lo proporciona solo en caso de que ya lo tenga)