【发布时间】:2013-12-26 17:48:04
【问题描述】:
如何从 sharpsvn 获取修订列表
【问题讨论】:
如何从 sharpsvn 获取修订列表
【问题讨论】:
如果您查看 SvnLogEventArgs 的元数据(作为 GetLog 的集合返回),它派生自 SvnLoggingEventArgs,它具有 Author、Revision、Time 和 LogMessage(以及其他)属性
每个SvnLogEventArgs 项目都有一个ChangedPaths 的集合,这些集合具有SvnChangeAction 和Path 的属性。
【讨论】:
您可以通过此方法获取所有日志信息的列表:
var client = new SvnClient();
System.Collections.ObjectModel.Collection<SvnLogEventArgs> logEventArgs;
client.GetLog("targetPath", out logEventArgs);
遍历所有 logEventArgs 将为您提供一些有用的信息 - LogMessage、Author 等。
我不知道你在做什么,但我正在使用 SvnWorkingCopyClient 检查最新版本的工作副本:
var workingCopyClient = new SvnWorkingCopyClient();
SvnWorkingCopyVersion version;
workingCopyClient.GetVersion(workingFolder, out version);
本地工作存储库的最新版本随后可通过
获得long localRev = version.End;
对于远程存储库,请使用
var client = new SvnClient();
SvnInfoEventArgs info;
client.GetInfo(targetUri, out info);
long remoteRev = info.Revision;
改为。
这类似于从命令行使用svnversion 工具。希望这会有所帮助。
【讨论】:
猜测你的问题到底是什么,最有可能是 SvnClient.Log(),为你提供路径更改的列表。
另一个答案是:
for (int i = 1; i < 101; i++)
yield return i;
为您提供存储库的前 100 个修订版;-)
有关如何使用 SvnClient.Log() 的一些示例,请参阅 Using SharpSvn to retrieve log entries within a date range
【讨论】:
这是您可以在列表修订号中获取所有修订号的代码形式。 UriSCpath 将是 svn 路径的 uri。
SvnTarget tr = SvnTarget.FromUri(UriSCPath);
Collection<SvnLogEventArgs> logEventArgs;
List<Int64> revisionNumbers = new List<Int64>();
SvnLogArgs logArgs = new SvnLogArgs();
DPISVN_Clnt.GetLog(UriSCPath, logArgs, out logEventArgs);
Int64 latestReision = logEventArgs[0].Revision;
foreach (var item in logEventArgs)
{
revisionNumbers.Add(item.Revision);
}
【讨论】: