如何使用SharpSvn对Svn存储库进行区分

时间:2010-04-11 16:41:29

标签: diff sharpsvn

我的问题很简单,使用SharpSvn Api,它也应该很容易。我在这里做了什么:

path = "c:\project";
using (SvnLookClient client = new SvnLookClient())
{
    SvnLookOrigin o = new SvnLookOrigin(path);
    Collection<SvnChangedEventArgs> changeList;
    client.GetChanged(o, out changeList); // <-- Exception
}

当我调用GetChanged时,我得到一个例外:

  

无法打开文件'c:\ project \ format':系统找不到指定的文件。

所以,也许有些东西我不见了?或者,这可能不是找到在本地存储库中修改的文件和文件夹列表的正确方法吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

SharpSvn中的SvnLookClient类相当于'svnlook'控制台应用程序。它是一个低级工具,使存储库挂钩可以使用直接文件访问来查看存储库的特定事务。

您可能希望使用SvnClient类来查看WorkingCopy,并且很可能使用其状态()或在某些情况下使用更简单的GetStatus()函数来查看更改的内容。

答案 1 :(得分:0)

SvnLookOrigin构造函数想要的路径实际上是:

path = "c:\project\.svn\";

也就是说,它希望特殊的“.svn”目录不仅仅是签出源的根目录。

虽然你可能想听Bert并做类似的事情:

path = "c:\project";
using (SvnLookClient client = new SvnLookClient())
{
    SvnLookOrigin o = new SvnLookOrigin(path);
    Collection<SvnChangedEventArgs> changeList;
    client.GetStatus(o, out changeList); // Should now return the differences between this working copy and the remote status.
}