如何确定用于使用 SharpSvn 创建分支的主干修订版?
How can I determine the trunk-revision used to create a branch with SharpSvn?
我目前正在构建一个 ChangeLog 生成器,它通过将 /trunk 的修订与 /branch/.. .(创建于某个点,来自/trunk),查看哪些提交不在分支中(然后做一些花哨的 Redmine 查询)。
为了最小化日志范围,我想根据用于创建分支的修订作为我的偏移量来优化查询。
我知道 TortoiseSVN 的 Stop on copy/rename 功能,以确定用于创建特定分支或标记的修订版。
我如何使用 SharpSvn 实现此目的 - 或者是否有更简单的方法来确定差异(以简化请求:我将只 diff /trunk against a descending branch 。 ..).
我用下面的代码得到了它 - 但我不确定这是否是最优雅的方式:
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
和 CopyFromPath
属性。
如果你保持你的分支相对相关,你可以使用 Subversion 的一些 mergeinfo 助手来完成大部分繁重的工作,以确定一个分支上的内容而不是另一个分支上的内容。
但是,如果您使用严格的项目政策,自己动手可能会容易得多。 Subversion 试图以 100% 通用的方式解决问题,这可能符合也可能不符合您的要求。
我目前正在构建一个 ChangeLog 生成器,它通过将 /trunk 的修订与 /branch/.. .(创建于某个点,来自/trunk),查看哪些提交不在分支中(然后做一些花哨的 Redmine 查询)。
为了最小化日志范围,我想根据用于创建分支的修订作为我的偏移量来优化查询。
我知道 TortoiseSVN 的 Stop on copy/rename 功能,以确定用于创建特定分支或标记的修订版。
我如何使用 SharpSvn 实现此目的 - 或者是否有更简单的方法来确定差异(以简化请求:我将只 diff /trunk against a descending branch 。 ..).
我用下面的代码得到了它 - 但我不确定这是否是最优雅的方式:
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
和 CopyFromPath
属性。
如果你保持你的分支相对相关,你可以使用 Subversion 的一些 mergeinfo 助手来完成大部分繁重的工作,以确定一个分支上的内容而不是另一个分支上的内容。
但是,如果您使用严格的项目政策,自己动手可能会容易得多。 Subversion 试图以 100% 通用的方式解决问题,这可能符合也可能不符合您的要求。