我目前正在构建一个ChangeLog生成器,它通过将 / trunk 的修订版与 / branch /...进行区分来创建这样的日志(其中是从 / trunk 的某点创建的,以查看哪些提交不在分支中(然后执行一些奇特的Redmine查询)。
为了最小化日志范围,我想根据用于创建分支的修订版优化查询作为我的偏移量。
我知道TortoiseSVN的停止复制/重命名功能,以确定用于创建特定分支或标记的修订。
如何通过SharpSvn实现这一目标 - 或者是否有更简单的方法来确定差异(简化请求:我只会对降序分支进行差异 / trunk 。)。 / p>
答案 0 :(得分:0)
我使用以下代码使用它 - 但我不确定这是否是最优雅的方式:
var svnClient = new SvnClient();
svnClient.GetLog(new Uri("http://..../REPOSITORY/BRANCH/FOO",
new SvnLogArgs
{
StrictNodeHistory = true
},
out logItems);
var initRevision = logItems.OrderBy(arg => arg.Revision)
.First();
var changedPath = initRevision.ChangedPaths.Single();
//changedPath.CopyFromRevision
//changedPath.CopyFromPath
让我感到困惑的是,我必须获取整个日志,然后订购它以获得初始修订,用于检索CopyFromRevision
和{{ 1}}属性。
答案 1 :(得分:0)
如果你保持你的分支相对相关,你可能可以使用Subversion的一些mergeinfo助手来完成决定一个分支而不是另一个分支的大部分繁重工作。
但是如果你使用严格的项目政策来做事情可能比这更容易。 Subversion尝试以100%通用的方式解决问题,这可能符合您的要求,也可能不符合您的要求。