无法读取root

时间:2013-02-01 18:48:14

标签: c# svn sharpsvn

所以我使用SharpSVN(SharpSvn.1.7-x86 1.7008.2243)并且我一直遇到问题。每当我尝试在驱动器根目录上的repo上使用SvnWorkingCopyClient时(例如说我有D:\驱动器,并且它本身就是一个repo)它会抛出一个{{1}我的错误。

事实上,我能找到的唯一不关心的命令是svn_dirent_is_absolute

关于如何解决这个问题的任何想法(除了移动我的工作副本或链接文件系统)?我希望在代码中找到一种方法,或者解决这个限制的替代方法(因为看起来SVN 1.7不再具有此限制)。

这是一些代码?

SvnClient.GetUriFromWorkingCopy(string)

我偶然发现了http://subversion.tigris.org/issues/show_bug.cgi?id=3535http://subversion.tigris.org/ds/viewMessage.do?dsForumId=463&viewType=browseAll&dsMessageId=2456472

所以,既然这种情况发生了,那么这不应该是一个问题吗?

3 个答案:

答案 0 :(得分:2)

kludge是从你当前目录“到”根目录的方式:

[pwd = C:\USERS\franklin\absrel]
root = ..\..\..

答案 1 :(得分:1)

SharSVN存在根路径问题,因为我们可以在邮件存档中阅读。但是,我们可以为您的场合制作小型黑客:

  1. 下载完整包sharpsvn http://sharpsvn.open.collab.net/files/documents/180/5569/SSvnEx-1.7002.1998.zip
  2. 将svnversion.exe复制到您的bin目录
  3. 然后我们需要一个黑客方法来获取verison

        public static bool GetVersionHack(string appPath,string targetPath,out long version)
        { 
           // <param name="appPath">Path to svnversion.exe</param>
           // <param name="path">Target path</param>
           // <param name="version">Result version</param>
    
            Process p = new Process();               
    
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = appPath;
            p.StartInfo.Arguments = targetPath + " -n";
            p.Start();
    
            //read svnversion.exe result
            string output = p.StandardOutput.ReadToEnd();
            p.WaitForExit();
    
            output = output.Replace("M", "");
            output = output.Replace("S", "");
            output = output.Replace("P", "");
    
            //valid results
            //4123:4168     mixed revision working copy
            //4168M         modified working copy
            //4123S         switched working copy
            //4123P         partial working copy, from a sparse checkout
            //4123:4168MS   mixed revision, modified, switched working copy            
    
            return long.TryParse(output, out version);
        }
    
  4. 并修改您的假方法full source code

  5. 当然这是一个肮脏的工作,但它可能会有所帮助。请小心使用svnversion.exe结果GetVersionHack不理想。

答案 2 :(得分:0)

如果它抱怨绝对路径,那么请尝试定义unc路径。分享您的D:\驱动器,这是您的svn回购。然后使用

访问它
    var RootPath="\\<servername>\D$";