In Azure DevOps, by default, indipendentemente dal ruolo che ricopriamo all'interno di un team project, non abbiamo la possibilità di fare un force push all'interno dei repository. Questo ha una ragione legata alla sicurezza e all'uso corretto dei processi perché, di fatto, sarebbe necessario fare uso delle Pull Request per fare merge di changes all'interno di un branch.
Tuttavia, in scenari molto particolari legati all'automation, il concetto di force push potrebbe assumere un altro significato e diventare una operazione "necessaria". Per fare ciò, dobbiamo grantare il permesso corretto all'interno di Azure DevOps.
Ci serviranno queste tre informazioni principali:
# Security namespace: GIT_SECURITY_NAMESPACE="2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87" # Project ID: PROJECT_ID=$(az devops project show --project "<project>" --organization "<organization>" --query "id" -o tsv || true) # Repository ID REPOSITORY_ID=$(az repos show --repository "<repository>" --project "<project>" --organization "<organization>" --query "id" -o tsv)
In particolare per quanto riguarda il primo parametro, c'è da notare che c'è un GUID già specificato. Questo è standard, e identifica in modo univoco le risorse di tipo "repository" (e infatti andremo ad impostare il force push proprio su un repository).
A questo punto posso recuperare l'identificativo del gruppo alla quale voglio dare i permessi (in questo caso usiamo Project Administrator, ma potrebbe essere un gruppo ad-hoc):
GROUP_DESCRIPTOR=$(az devops security group list --organization "<organization>" --project "$PROJECT_ID" --scope project --query "graphGroups[?displayName=='Project Administrators'].descriptor" -o tsv)
E, infine, possiamo grantare il permesso sempre sfruttando la Azure DevOps CLI:
az devops security permission update --organization "<organization>" --id "$GIT_SECURITY_NAMESPACE" --subject "$GROUP_DESCRIPTOR" --token "repoV2/${PROJECT_ID}/${REPOSITORY_ID}/" --allow-bit 128 --merge trueIn sostanza non abbiamo fatto altro che chiamare gli endpoint di permission all'interno dell'area security, per impostare sul gruppo Project Administrator, il bit 128 (quello che identifica il force push sul repository) a true, nel token che rappresenta il repository di riferimento.
Cambiando semplicemente il bit possiamo abilitare, per esempio, altre funzionalità come il bypass delle Pull Request:
az devops security permission update --organization "<organization>" --id "$GIT_SECURITY_NAMESPACE" --subject "$GROUP_DESCRIPTOR" --token "repoV2/${PROJECT_ID}/${REPOSITORY_ID}/" --allow-bit 32768 --merge trueCommenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Configurare automaticamente un webhook in Azure DevOps
Gestione ciclo di vita in .NET Aspire
Utilizzare Containers in .NET Aspire
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Creare una cache temporanea in JavaScript
GitHub Copilot CLI in ambienti offline
Come automatizzare il download dei report di billing da GitHub Enterprise
Eseguire i pre-commit hook di git con dependabot
Integrare il Docker Model Runner in un workflow di GitHub
Gestione delle issue type con GitHub
Raggruppamento degli aggiornamenti di dipendenze tra directory in un monorepo con Dependabot


