Describe the bug
When I have 2 branches with smiliar prefix, and I perform az repos ref delete --name {branchName} it will mention ref not found. Failed to find object_id for ref {branchName}. Please provide object_id.
e.g. having 2 branches:
heads/auto/branch1
heads/auto/branch12
calling
az repos ref delete --myproject --myrepository --name heads/auto/branch1 returns the error mentioned above.
I think underlying issue is that it does a filter and cannot distinguish between both branches because they both contain the name. I think this because after deleting heads/auto/branch12 manually, the call succeeds without any errors.
This is also supported by the debug logging that finds 2 entries "count":2}.
azext_devops.devops_sdk.client: Response content: b'{"value":[{"name":"refs/heads/auto/branch1","objectId":"redacted","creator":{"displayName":"redacted Koeter","url":"https://spsprodweu4.vssps.visualstudio.com/redacted/_apis/Identities/redacted","_links":{"avatar":{"href":"https://dev.azure.com/organization/_apis/GraphProfile/MemberAvatars/aad.redacted"}},"id":"redacted","uniqueName":"Me@org.com","imageUrl":"https://dev.azure.com/organization/_api/_common/identityImage?id=redacted","descriptor":"aad.redacted"},"url":"https://dev.azure.com/organization/redacted/_apis/git/repositories/redacted/refs?filter=heads%2Fauto%2Fbranch1"},{"name":"refs/heads/auto/branch12","objectId":"redacted","creator":{"displayName":"redacted Koeter","url":"https://spsprodweu4.vssps.visualstudio.com/redacted/_apis/Identities/redacted","_links":{"avatar":{"href":"https://dev.azure.com/organization/_apis/GraphProfile/MemberAvatars/aad.redacted"}},"id":"redacted","uniqueName":"Me@org.com","imageUrl":"https://dev.azure.com/organization/_api/_common/identityImage?id=redacted","descriptor":"aad.redacted"},"url":"https://dev.azure.com/organization/redacted/_apis/git/repositories/redacted/refs?filter=heads%2Fauto%2Fbranch12"}],"count":2}'
Related command
az repos ref delete
Errors
ref not found
Failed to find object_id for ref heads/auto/branch1. Please provide object_id.
Issue script & Debug output
cli.knack.cli: Command arguments: ['repos', 'ref', 'delete', '--project', 'project', '--repository', 'Frontend', '--name', 'heads/auto/branch1', '--debug']
cli.knack.cli: __init__ debug log:
Enable color in terminal.
cli.knack.cli: Event: Cli.PreExecute []
cli.knack.cli: Event: CommandParser.OnGlobalArgumentsCreate [<function CLILogging.on_global_arguments at 0x01D5F7A8>, <function OutputProducer.on_global_arguments at 0x02088898>, <function CLIQuery.on_global_arguments at 0x020AA668>]
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Modules found from index for 'repos': ['azext_devops']
cli.azure.cli.core: Loading command modules:
cli.azure.cli.core: Name Load Time Groups Commands
cli.azure.cli.core: Total (0) 0.000 0 0
cli.azure.cli.core: These extensions are not installed and will be skipped: ['azext_ai_examples', 'azext_next']
cli.azure.cli.core: Loading extensions:
cli.azure.cli.core: Name Load Time Groups Commands Directory
cli.azure.cli.core: azure-devops 0.289 60 192 C:\Users\Me\.azure\cliextensions\azure-devops
cli.azure.cli.core: Total (1) 0.289 60 192
cli.azure.cli.core: Loaded 60 groups, 192 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command : repos ref delete
cli.azure.cli.core: Command table: repos ref delete
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x045600C8>]
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to 'C:\Users\Me\.azure\commands\2024-08-07.09-36-50.repos_ref_delete.3416.log'.
az_command_data_logger: command args: repos ref delete --project {} --repository {} --name {} --debug
cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument.<locals>.add_subscription_parameter at 0x0459D398>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument.<locals>.add_ids_arguments at 0x0459D348>, <function register_cache_arguments.<locals>.add_cache_arguments at 0x0459D438>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.knack.cli: Event: CommandInvoker.OnPostParseArgs [<function OutputProducer.handle_output_argument at 0x020888E8>, <function CLIQuery.handle_query_parameter at 0x020AA6B8>, <function register_ids_argument.<locals>.parse_ids_arguments at 0x0459D3E8>, <function DevCommandsLoader.post_parse_args at 0x045C3758>]
az_command_data_logger: extension name: azure-devops
az_command_data_logger: extension version: 1.0.1
cli.azext_devops.dev.common.vsts_git_url_info: Remote url: https://organization@dev.azure.com/organization/project/_git/Oss-Scan
azext_devops.devops_sdk._file_cache: Loading cache file: C:\Users\Me\.azure\azuredevops\cache\remotes.json
azext_devops.devops_sdk._file_cache: attempting to read file C:\Users\Me\.azure\azuredevops\cache\remotes.json as utf-8-sig
cli.azext_devops.dev.common.services: Detect: Url discovery took 0:00:00.157374
cli.azext_devops.dev.common._credentials: Getting credential: azdevops-cli:https://dev.azure.com/organization
cli.azext_devops.dev.common._credentials: Getting credential: azdevops-cli: default
cli.azure.cli.core: Current cloud config:
AzureCloud
cli.azext_devops.dev.common.services: trying to get token (temp) for tenant redacted and user Me@org.com
cli.azure.cli.core.auth.persistence: build_persistence: location='C:\\Users\\Me\\.azure\\msal_token_cache.bin', encrypt=True
cli.azure.cli.core.auth.binary_cache: load: C:\Users\Me\.azure\msal_http_cache.bin
urllib3.util.retry: Converted retries value: 1 -> Retry(total=1, connect=None, read=None, redirect=None, status=None)
msal.authority: openid_config = redacted
msal.application: Broker enabled? False
cli.azure.cli.core.auth.msal_authentication: UserCredential.get_token: redacted
msal.application: Cache hit an AT
msal.telemetry: Generate or reuse correlation_id: redacted
cli.azext_devops.dev.common.services: instance recieved in validate_token_for_instance https://dev.azure.com/organization
cli.azext_devops.dev.common.services: instance processed in validate_token_for_instance https://dev.azure.com/organization
msrest.universal_http.requests: Configuring retry: max_retries=3, backoff_factor=0.8, max_backoff=90
msrest.universal_http.requests: Configuring retry: max_retries=3, backoff_factor=0.8, max_backoff=90
azext_devops.devops_sdk._file_cache: Loading cache file: C:\Users\Me\.azure-devops\python-sdk\cache\resources.json
azext_devops.devops_sdk._file_cache: attempting to read file C:\Users\Me\.azure-devops\python-sdk\cache\resources.json as utf-8-sig
azext_devops.devops_sdk.connection: File cache hit for resources on: https://dev.azure.com/organization
msrest.universal_http.requests: Configuring retry: max_retries=3, backoff_factor=0.8, max_backoff=90
azext_devops.devops_sdk._file_cache: Loading cache file: C:\Users\Me\.azure-devops\python-sdk\cache\options.json
azext_devops.devops_sdk._file_cache: attempting to read file C:\Users\Me\.azure-devops\python-sdk\cache\options.json as utf-8-sig
azext_devops.devops_sdk.client: File cache hit for options on: https://dev.azure.com/organization
azext_devops.devops_sdk.client: Route template: _apis/{resource}/{*projectId}
azext_devops.devops_sdk.client: Api version '5.0'
azext_devops.devops_sdk.client: GET https://dev.azure.com/organization/_apis/projects?stateFilter=all&$top=1&$skip=0
azext_devops.devops_sdk.client: Request content: None
msrest.universal_http: Configuring redirects: allow=True, max=30
msrest.universal_http: Configuring request: timeout=100, verify=True, cert=None
msrest.universal_http: Configuring proxies: ''
msrest.universal_http: Evaluate proxies against ENV settings: True
urllib3.connectionpool: Starting new HTTPS connection (1): dev.azure.com:443
urllib3.connectionpool: https://dev.azure.com:443 "GET /organization/_apis/projects?stateFilter=all&$top=1&$skip=0 HTTP/1.1" 200 342
azext_devops.devops_sdk.client: Response content: b'{"count":1,"value":[{"id":"redacted","name":"Predevelopment","url":"https://dev.azure.com/organization/_apis/projects/redacted","state":"wellFormed","revision":195,"visibility":"private","lastUpdateTime":"2024-08-06T12:28:30.2Z"}]}'
msrest.universal_http.requests: Configuring retry: max_retries=3, backoff_factor=0.8, max_backoff=90
cli.azext_devops.dev.common.telemetry: Azure devops telemetry disabled.
msrest.universal_http.requests: Configuring retry: max_retries=3, backoff_factor=0.8, max_backoff=90
azext_devops.devops_sdk.connection: File cache hit for resources on: https://dev.azure.com/organization
msrest.universal_http.requests: Configuring retry: max_retries=3, backoff_factor=0.8, max_backoff=90
azext_devops.devops_sdk.client: Route template: {project}/_apis/{area}/repositories/{repositoryId}/{resource}/{*filter}
azext_devops.devops_sdk.client: Api version '5.0'
azext_devops.devops_sdk.client: GET https://dev.azure.com/organization/project/_apis/git/repositories/Frontend/refs?filter=heads%2Fauto%2Fbranch1
azext_devops.devops_sdk.client: Request content: None
msrest.universal_http: Configuring redirects: allow=True, max=30
msrest.universal_http: Configuring request: timeout=100, verify=True, cert=None
msrest.universal_http: Configuring proxies: ''
msrest.universal_http: Evaluate proxies against ENV settings: True
urllib3.connectionpool: Starting new HTTPS connection (1): dev.azure.com:443
urllib3.connectionpool: https://dev.azure.com:443 "GET /organization/project/_apis/git/repositories/Frontend/refs?filter=heads%2Fauto%2Fbranch1 HTTP/1.1" 200 None
azext_devops.devops_sdk.client: Response content: b'{"value":[{"name":"refs/heads/auto/branch1","objectId":"redacted","creator":{"displayName":"redacted Koeter","url":"https://spsprodweu4.vssps.visualstudio.com/redacted/_apis/Identities/redacted","_links":{"avatar":{"href":"https://dev.azure.com/organization/_apis/GraphProfile/MemberAvatars/aad.redacted"}},"id":"redacted","uniqueName":"Me@org.com","imageUrl":"https://dev.azure.com/organization/_api/_common/identityImage?id=redacted","descriptor":"aad.redacted"},"url":"https://dev.azure.com/organization/redacted/_apis/git/repositories/redacted/refs?filter=heads%2Fauto%2Fbranch1"},{"name":"refs/heads/auto/branch12","objectId":"redacted","creator":{"displayName":"redacted Koeter","url":"https://spsprodweu4.vssps.visualstudio.com/redacted/_apis/Identities/redacted","_links":{"avatar":{"href":"https://dev.azure.com/organization/_apis/GraphProfile/MemberAvatars/aad.redacted"}},"id":"redacted","uniqueName":"Me@org.com","imageUrl":"https://dev.azure.com/organization/_api/_common/identityImage?id=redacted","descriptor":"aad.redacted"},"url":"https://dev.azure.com/organization/redacted/_apis/git/repositories/redacted/refs?filter=heads%2Fauto%2Fbranch12"}],"count":2}'
cli.azext_devops.dev.repos.ref: ref not found
cli.azext_devops.dev.common.exception_handler: handling generic error
cli.azure.cli.core.azclierror: Traceback (most recent call last):
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 233, in invoke
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 663, in execute
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 726, in _run_jobs_serially
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 718, in _run_job
File "C:\Users\Me\.azure\cliextensions\azure-devops\azext_devops\dev\common\exception_handler.py", line 31, in azure_devops_exception_handler
reraise(*sys.exc_info())
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\six.py", line 719, in reraise
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 697, in _run_job
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 333, in __call__
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
File "C:\Users\Me\.azure\cliextensions\azure-devops\azext_devops\dev\repos\ref.py", line 82, in delete_ref
raise CLIError("Failed to find object_id for ref " + name + ". Please provide object_id.")
knack.util.CLIError: Failed to find object_id for ref heads/auto/branch1. Please provide object_id.
cli.azure.cli.core.azclierror: Failed to find object_id for ref heads/auto/branch1. Please provide object_id.
az_command_data_logger: Failed to find object_id for ref heads/auto/branch1. Please provide object_id.
cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x04560208>]
az_command_data_logger: exit code: 1
cli.__main__: Command ran in 3.273 seconds (init: 0.509, invoke: 2.764)
Expected behavior
Branch deleted, or error mentioning it cannot distinguish between multiple branches.
Environment Summary
azure-cli 2.56.0 *
core 2.56.0 *
telemetry 1.1.0
Extensions:
account 0.2.5
azure-devops 1.0.1
interactive 0.5.1
Dependencies:
msal 1.24.0b2
azure-mgmt-resource 23.1.0b2
Python location 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe'
Extensions directory 'C:\Users__.azure\cliextensions'
Python (Windows) 3.11.5 (tags/v3.11.5:cce6ba9, Aug 24 2023, 14:21:31) [MSC v.1936 32 bit (Intel)]
Legal docs and information: aka.ms/AzureCliLegal
You have 2 update(s) available. Consider updating your CLI installation with 'az upgrade'
Additional context
No response
Describe the bug
When I have 2 branches with smiliar prefix, and I perform
az repos ref delete --name {branchName}it will mentionref not found. Failed to find object_id for ref {branchName}. Please provide object_id.e.g. having 2 branches:
heads/auto/branch1heads/auto/branch12calling
az repos ref delete --myproject --myrepository --name heads/auto/branch1returns the error mentioned above.I think underlying issue is that it does a filter and cannot distinguish between both branches because they both contain the name. I think this because after deleting
heads/auto/branch12manually, the call succeeds without any errors.This is also supported by the debug logging that finds 2 entries
"count":2}.Related command
az repos ref delete
Errors
ref not found
Failed to find object_id for ref heads/auto/branch1. Please provide object_id.
Issue script & Debug output
Expected behavior
Branch deleted, or error mentioning it cannot distinguish between multiple branches.
Environment Summary
azure-cli 2.56.0 *
core 2.56.0 *
telemetry 1.1.0
Extensions:
account 0.2.5
azure-devops 1.0.1
interactive 0.5.1
Dependencies:
msal 1.24.0b2
azure-mgmt-resource 23.1.0b2
Python location 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe'
Extensions directory 'C:\Users__.azure\cliextensions'
Python (Windows) 3.11.5 (tags/v3.11.5:cce6ba9, Aug 24 2023, 14:21:31) [MSC v.1936 32 bit (Intel)]
Legal docs and information: aka.ms/AzureCliLegal
You have 2 update(s) available. Consider updating your CLI installation with 'az upgrade'
Additional context
No response