Как правильно извлечь SVN-Info из относительного URI в SVN-external с помощью SharpSvn
У меня есть командлет Powershell, который создает SVN-ветви из магистрали через SharpSvn. Репозиторий содержит внешние компоненты с явно заданной и не установленной редакцией /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.