为什么我的SharpSVN客户端只返回部分存储库URI?

时间:2015-10-05 18:57:18

标签: c# svn sharpsvn

我希望这不是太模糊。我正在编写一个应用程序,在我们的SVN服务器上的post-commit钩子上运行。当我请求存储库URI时,我有时会得到一个与我的提交路径不匹配的答案。

以下是我如何获得提交args(编辑以添加更多详细信息):

public Collection<SvnLogEventArgs> GetCommitArgs(string strUri, long lngRevision)
{ 
    try
        {
            using (SvnClient client = new SvnClient())
            {
                SvnLogArgs args = new SvnLogArgs();
                Collection<SvnLogEventArgs> col;
                args.Start = lngRevision;
                args.End = lngRevision;
                bool bolGotLog = client.GetLog(new Uri(strUri), args, out col);
                return col;
            }
        }
        catch
        {
            return null;
        }
    }

但是这里我是如何获得repo URI的(GetRepository()基本上只是将其重新格式化为URL):

colCommitArgs = GetCommitArgs(args[0], long.Parse(args[1]));
strRepository = GetRepository(args[0] + "/" + colCommitArgs[0].ChangedPaths[0].RepositoryPath.ToString());

args[0]实际上是指从提交传递的args集。我发现ChangedPaths有时是空的。

例如,如果我提交C:/Repositories/a_repo/somefolder/example.txt,我从SVN commit args返回的值只是C:/Repositories/a_repo/。这可能是我们SVN设置的问题(或者我对其缺乏了解)。为什么有些文件夹被视为存储库而其他文件夹只被视为文件夹?有没有办法指定文件夹不仅仅是一个文件夹?或者SharpSVN有不同的方式来获取承诺文件夹?我目前在原始URI的末尾连接ChangedPaths[0].RepositoryPath

1 个答案:

答案 0 :(得分:0)

我对您使用的C#库了解不多,但从一般的Subversion角度来看,您通常需要使用两个不同的版本号来查看更改。尝试使用args.Start = lngRevision - 1;,看看会发生什么。