使用 SharpSvn 检查文件夹是否在 Subversion 中进行了版本控制
Check if folder is versioned in Subversion using SharpSvn
我正在使用 SharpSvn 库来访问 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]。版本化值返回为 false。但是,上面的文件夹是版本化的,我可以根据图标确认它 -
我不确定我在这个 API 用法中遗漏了什么,或者 API 本身是否不符合我的要求。
非常感谢任何帮助。
如果你只想检查一个目录是否在版本控制下,使用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);
}
}
如果您想知道项目在哪个存储库中进行版本控制,那么您也可以 return 来自 SvnInfoArgs
的信息。
如果你真的想使用 svn status
那么你应该看看 this questions since it explains why the option RetrieveAllEntries
must be set in the SvnStatusArgs
options and here。
您也可以使用GetUriFromWorkingCopy()
方法
if (client.GetUriFromWorkingCopy(path) != null)
{ //path under version control
}
else { //path not under version control }
我正在使用 SharpSvn 库来访问 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]。版本化值返回为 false。但是,上面的文件夹是版本化的,我可以根据图标确认它 -
我不确定我在这个 API 用法中遗漏了什么,或者 API 本身是否不符合我的要求。
非常感谢任何帮助。
如果你只想检查一个目录是否在版本控制下,使用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);
}
}
如果您想知道项目在哪个存储库中进行版本控制,那么您也可以 return 来自 SvnInfoArgs
的信息。
如果你真的想使用 svn status
那么你应该看看 this questions since it explains why the option RetrieveAllEntries
must be set in the SvnStatusArgs
options and here。
您也可以使用GetUriFromWorkingCopy()
方法
if (client.GetUriFromWorkingCopy(path) != null)
{ //path under version control
}
else { //path not under version control }