我正在使用SharpSvn库来访问Subversion。我需要检查特定文件夹是否是subversion存储库的一部分。
经过一些谷歌搜索后,我找到了以下代码 -
SvnClient client = new SvnClient();
Collection<SvnStatusEventArgs> args2;
bool result1 = client.GetStatus(@"D:\SVNMapping\demo\trunk\NewFolder", new SvnStatusArgs(), out args2);
result1变为true但是args2 [0] .Versioned值返回false。但是,上面的文件夹是版本化的,我可以根据图标确认它 -
我不确定此API使用中缺少什么,或者API本身是否符合我的要求。
非常感谢任何帮助。
答案 0 :(得分:2)
如果您只想检查目录是否受版本控制,则使用svn info
会更容易。在SharpSvn你可以这样做,例如像这样:
/// <summary>
/// Checks whether the specified path is under version control or not.
/// </summary>
/// <remarks>
/// Internally, the "svn info" command is used (no network access required).
/// </remarks>
/// <param name="path">The path to check.</param>
/// <returns>True, if the path is under version control, else false.</returns>
private bool CheckIfPathIsUnderVersionControl(string path)
{
using (SvnClient svnClient = new SvnClient())
{
// use ThrowOnError = false to avoid exception in case the path does
// not point to a versioned item
SvnInfoArgs svnInfoArgs = new SvnInfoArgs() { ThrowOnError = false };
Collection<SvnInfoEventArgs> svnInfo;
return svnClient.GetInfo(SvnTarget.FromString(path), svnInfoArgs, out svnInfo);
}
}
如果您想知道该项目的版本是哪个存储库,那么您也可以从SvnInfoArgs
返回此信息。
如果您真的想使用svn status
,那么您应该查看this个问题,因为它解释了为什么必须在RetrieveAllEntries
选项中设置选项SvnStatusArgs
并且here
答案 1 :(得分:0)
您也可以使用GetUriFromWorkingCopy()
方法
if (client.GetUriFromWorkingCopy(path) != null)
{ //path under version control
}
else { //path not under version control }