2010-06-23 30 views
5

Estoy utilizando la función de miembro Export() para obtener archivos en revisiones específicas que funciona, pero por alguna razón en otros casos no lo es. Para todas las rutas modificadas, parece funcionar, sin embargo, con los archivos eliminados y, en ocasiones, añadidos en esa revisión, recibo la excepción que indica que no hay ningún archivo en la url utilizada. Cuando uso TurtoiseSVNs "Copy Revision to ..." en estas rutas funciona bien y me pregunto si me falta algo con SharpSVN, me gustaría las versiones completas en la revisión de todos los archivos modificados. Aquí está la idea general de mi código:¿Por qué SharpSVN SvnClient.Export (...) no siempre encuentra los archivos que deberían estar allí?

if (logentry.ChangedPaths != null) 
{ 
    foreach (SvnChangeItem svnChangeItem in logentry.ChangedPaths) 
    { 
     SvnExportArgs ex = new SvnExportArgs(); 
     ex.Revision = revisionNum; 
     client.Export(SvnTarget.FromUri(new Uri(pathInsideRepo)), exportFile, ex); 
    } 
} 

Cualquier ayuda o sugerencia sería apreciada, gracias.

Respuesta

2

Descubrí que el uso de un SvnUriTarget en lugar de solo el uri con SvnExportArgs me permitió obtener la información correcta. No estoy seguro de por qué son diferentes, pero funciona.

así que en vez de la exportación por encima de lo usa:

client.Export(new SvnUriTarget(new Uri(pathInsideRepo), revisionNumber), exportFile, ex); 

La respuesta que encontré fue en link text

2

El cliente de línea de comando tiene el mismo comportamiento. Lo que sucede es que las URL que apuntan a un archivo pueden aparecer y desaparecer. Esto significa que la url que apunta a un archivo que ahora se elimina no es válida, a menos que especifique que desea utilizar una url más antigua. Esto se llama una revisión de clavija.

Lea en peg revisions en el svnbook.

Cuestiones relacionadas