Этот пост в блоге объясняет все это .
Один из моих читателей только что понял вашу проблему и отправил решение в виде комментария:
Pickle Rick Гость • 2 дня назад
Извините, это дубль 2 из того же, что я и раньше неправильно поняла,но мое текущее понимание таково:
Использование az для обновления разрешений для конкретной ветви требует, чтобы каждая часть имени ветви была закодирована в шестнадцатеричном формате в Unicode. По сути, я имею в виду, если вы используете в качестве соглашения feature / branchname, его шестнадцатеричный / шестнадцатеричный код, а не кодируемые косые черты. Это все немного сумасшествие.
Используя powershell, я закончил с:
function hexify($string) { return ($string | Format-Hex -Encoding
Unicode | Select-Object -Expand Bytes | ForEach-Object { '{0:x2}' -f
$_ }) -join '' }
$branch = "feature/*" $split = $branch.Split("/") $hexBranch = ($split
| ForEach-Object { hexify -string $_ }) -join "/"
Затем вы можете использовать строку для генерации токена, например:
repoV2/daec401a-49b6-4758-adb5-3f65fd3264e3/f59f38e0-e8c4-45d5-8dee-0d20e7ada1b7/refs/heads/6600650061007400750072006500/2a00
Какой полный беспорядок! Я понятия не имею, почему обе ссылки / главы / и другие / не закодированы. может быть, я что-то упускаю, но эй, похоже, это сработает.
Спасибо за ваши примеры, указывающие мне правильное направление.
Знак является чем-то вроде кошмара. Например, нет единого API для получения токена для ветки. Я также видел следующий формат:
Поскольку /
является разделителем токена, ссылка на ветвь экранируется заменой /
на ^
. Таким образом, refs/heads/master
становится: refs^heads^master
Не уверен, почему код не будет работать для вас, это может быть связано с кодовой страницей вашей консоли или королем Unicode вашеговходные данные.
Это то, что я получаю, когда запускаю пример кода:
function hexify($string) {
return ($string | Format-Hex -Encoding Unicode | Select-Object -Expand Bytes | ForEach-Object { '{0:x2}' -f $_ }) -join ''
}
$branch = "feature/mine"
$split = $branch.Split("/")
$hexBranch = ($split | ForEach-Object { hexify -string $_ }) -join "/"
write-host "refs/heads/$hexBranch"
refs/heads/6600650061007400750072006500/6d0069006e006500