可以';t确定用户';s配置路径(尝试获取修订号时)
本文关键字:获取 配置 用户 路径 可以 | 更新日期: 2023-09-27 17:58:58
我将SharpSVN dll与Visual Studio 2010一起使用,以获取最新的修订号,这样我就可以使用此编号对项目进行版本设置。我尝试了下面的这段代码,但它给了我一个错误:
Can't determine the user's config path
我甚至不明白这意味着什么。我只想提供svn链接,我的凭据,如用户名和密码,并获得最新的修订号。
这是我迄今为止尝试的代码:
using(SvnClient client = new SvnClient())
{
//client.LoadConfiguration(Path.Combine(Path.GetTempPath(), "Svn"), true);
Collection<SvnLogEventArgs> list;
client.Authentication.DefaultCredentials = new NetworkCredential("john.locke", "s7y5543a!!");
SvnLogArgs la = new SvnLogArgs();
client.GetLog(new Uri("https://100.10.20.12/svn/P2713888/trunk/src/"), la, out list);
string sRevisionNumber = string.Empty;
int iRevisionNumber = 0;
foreach(SvnLogEventArgs a in list)
{
if (Convert.ToInt32(a.Revision) > iRevisionNumber)
{
iRevisionNumber = Convert.ToInt32(a.Revision);
}
}
RevisionNumber.Text = iRevisionNumber.ToString();
}
也可以选择获得修订号的其他方式作为答案。
我也遇到了这个问题——在使用之前需要在SvnClient上查找/设置属性。以下是我最终使用的内容。试着使用这个方法,而不是仅仅实例化你的客户端对象——如果它还不存在,它会自动创建一个配置文件夹:
private SvnClient GetClient()
{
SvnClient client = new SvnClient();
// Note: Settings creds up here is optional
// client.Authentication.DefaultCredentials = _creds;
string configPath = Path.Combine(Path.GetTempPath(), "sharpsvn");
if (!Directory.Exists(configPath))
{
Directory.CreateDirectory(configPath);
}
client.LoadConfiguration(configPath, true);
return client;
}
或者,如果您想最小化文件IO检查以查看目录是否存在,可以尝试LoadConfiguration,并且仅在调用失败时创建并重新分配目录,但每次只检查会更简单。
无论如何,您可以使用以下代码获得某个位置的最新修订号:
public long GetLatestRevisionNumber(Uri svnPath)
{
using (SvnClient client = GetClient())
{
SvnInfoEventArgs info;
client.GetInfo(svnPath, out info);
return info.LastChangeRevision;
}
}