我遇到了SharpSVN api的问题。当我尝试使用SvnClient.Write()或SvnClient.Export()时,会发生以下错误:
存储库格式错误的网址
我的代码如下
using(SvnClient client = new SvnClient())
{
MemoryStream ms = new MemoryStream();
client.Authenticator.DefaultCredentials = new NetworkCredential("master","master");
SvnTarget t1 = new SvnUriTarget(new Uri("http://ETAB-APP:81/repositorio/"));
SvnTarget t2 = new SvnUriTarget(new Uri("http://ETAB-APP:81/repositorio/Registro e Controle Acadêmico/Administração/0000/Dossiê do Aluno - ADEMIR JOSPE SANGALLI - (2001193) - Curso (000)/DOC ADICIONAL(264839).pdf"));
client.Write(t2, ms);
client.Export(t2, "C:\\chups");
}
这让我疯了,因为如果我尝试使用t1作为SvnTarget执行此方法,一切正常。但问题是我每次想要获取特定文件时都无法导出所有存储库。
我试图在URL名称之前加上“@”,即
http://@ETAB-APP:81/repositorio/Registro eControleAcadêmico/Administração/ 0000 /DossiêdoAluno - ADEMIR JOSPE SANGALLI - (2001193) - Curso(000)/ DOC ADICIONAL(264839).pdf
但没有任何反应。
我做错了什么?
PS:对不起,如果我有任何错误,我是巴西人,我的英语不是很好答案 0 :(得分:0)
我发现如果您只是将任意URL传递给Uri对象构造函数,它将创建一个SVN无法理解的无效Uri。这可能是由于外来字符或某些字符的转义,不需要由默认的Uri对象构造函数进行转义。
使用UriBuilder对象将Uri分解为其部分,然后将生成的Uri传递给SVN。
// Build Uri by explicitly specifying the constituent parts.
UriBuilder uriBuilder = new UriBuilder("http", "ETAB-APP", 81, "/repositorio/Registro e Controle Acadêmico/Administração/0000/Dossiê do Aluno - ADEMIR JOSPE SANGALLI - (2001193) - Curso (000)/DOC ADICIONAL(264839).pdf");
using(SvnClient client = new SvnClient())
{
MemoryStream ms = new MemoryStream();
client.Authenticator.DefaultCredentials = new NetworkCredential("master","master");
SvnTarget t2 = new SvnUriTarget(uriBuilder.Uri);
client.Write(t2, ms);
client.Export(t2, "C:\\chups");
}
答案 1 :(得分:0)
当我调用sharpsvn通过url获取svn信息时(包含'&',并且'/'结尾).sharp svn会抛出异常。
感谢sbrogers:
你需要逃脱网址吗? SVN Api可能会为你做,但它 可能值得尝试运行它 msdn.microsoft.com/en-us/library/... - sbrogers 2010年12月29日14:05
我使用此代码
SvnUriTarget repos = new SvnUriTarget(myUrlString.TrimEnd(new char[] { '/' }));
我的问题是已解决。