我有一个 Powershell Cmdlet,它通过 SharpSvn 从主干创建 SVN 分支。存储库包含有和没有显式设置的修订/ pegRevision 的外部。在分支中,所有没有修订集的外部都应该在创建分支时对其 HEAD 修订,未来的更改不会影响分支。
因此,我将外部信息提取到SharpSvn.SvnExternalItem
存储库中并查询存储库以查找使用找到的每个外部的当前 HEAD 修订版SharpSvn.SvnClient.GetInfo(SvnTarget externalTarget, out SvnInfoEventArgs info)
因此,我需要一种可靠的方法来从 ExternalInfo 到 SvnTarget(或直接到修订信息)。我不想限制外部 URI 的格式,即这里显示的所有可能性都应该有效。SharpSvn 中是否有一个干净的解决方案来将所有这些类型的 URI 解析为绝对 URI 或检索其最新版本的替代方法?
例如,这样的事情会很棒(我知道我的外部 uri 和定义外部的目录的绝对 URI,相对 URI 肯定需要):
public SvnTarget ResolveExternalUri(SvnUriTarget aOwningDirectory, string aExternalReferenceUri) {
// yeah, I know this does not exist (yet?)
return SvnUri.Combine(aOwningDirectory.Uri, aExternalRefferenceUri);
}
目前我只是自己解析外部 URI 字符串,检查它是相对的还是绝对的,并处理那些 '^' 和 '//' 前缀,但我不确定我是否支持所有变体,我认为这应该是一个很常见的任务,这可以通过 SvnClient-lib 中的一些隐藏的 gem 来解决。