Так что я использую SharpSVN (SharpSvn.1.7-x86 1.7008.2243), и у меня все время возникает проблема. Каждый раз, когда я пытаюсь использовать SvnWorkingCopyClient
на репо, находящемся в корне диска (например, у меня есть привод D:\
, и он сам является репо), он вызывает ошибку svn_dirent_is_absolute
.Не удается прочитать root
На самом деле единственная команда, которую я мог найти, что не все равно был SvnClient.GetUriFromWorkingCopy(string)
Любые идеи о том, как я мог бы решить эту проблему (кроме перемещения моей рабочей копии, или ссылки на файловой системе)? Я надеюсь найти способ в коде или альтернативу обойти это ограничение (поскольку, похоже, SVN 1.7 больше не имеет этого ограничения).
Вот код?
private void fakeFunction(){
var RootPath="d:\";
using (var client = new SharpSvn.SvnClient())
using(var workingClient = new SvnWorkingCopyClient())
{
SvnWorkingCopyVersion workingVersion = null;
// Exception happens here
if (workingClient.GetVersion(this.RootPath, out workingVersion))
{
CurrentRevision = workingVersion.End;
// This will resolve just fine
var targetUri = client.GetUriFromWorkingCopy(RootPath);
var target = SvnTarget.FromUri(targetUri);
SvnInfoEventArgs info = null;
if (client.GetInfo(target, out info))
{
if (workingVersion.End != info.Revision)
{
System.Collections.ObjectModel.Collection<SvnLogEventArgs> logEventArgs = null;
if (client.GetLog(targetUri, out logEventArgs))
{
var oldBack = Console.BackgroundColor;
var oldFor = Console.ForegroundColor;
Console.BackgroundColor = ConsoleColor.DarkMagenta;
Console.ForegroundColor = ConsoleColor.White;
foreach (var l in logEventArgs)
{
Console.WriteLine("[{0}-{1}]-{2}", l.Revision, l.Author, l.LogMessage);
}
Console.BackgroundColor = oldBack;
Console.ForegroundColor = oldFor;
}
System.Console.WriteLine("Repo not up to date.");
}
}
}
}
}
я наткнулся на эту http://subversion.tigris.org/issues/show_bug.cgi?id=3535 и http://subversion.tigris.org/ds/viewMessage.do?dsForumId=463&viewType=browseAll&dsMessageId=2456472
Так, так как это случилось путь назад, когда, не это не будет проблемой больше?
Ваша вторая строка кода 'вар ROOTPATH =„D: \“ ; 'не компилируется (это ваш фактический источник?). Кроме того, в дальнейшем вы ссылаетесь на 'this.RootPath', это другая переменная, это то, что вы намереваетесь делать? –
Да. Они заполнены во время выполнения, я просто показываю, что путь был установлен. –
Я нашел причину в SharpSvn для этой проблемы. Он должен быть исправлен в следующей сборке. Мне было бы намного легче, если бы вы могли опубликовать это как небольшую воспроизводимую проблему здесь или на [email protected] Показывать workingClient.GetVersion («C: \\», out q), поскольку проблема с выходом исключения намного проще диагностировать, а затем ваш полный пример. –