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
Effettuare un clone parziale di un repository di GitHub
Supporto nativo a JSON in SQL Server 2025
Configurare automaticamente un webhook in Azure DevOps
Rendere le variabili read-only in una pipeline di Azure DevOps
Utilizzare i variable font nel CSS
Gestire gli errori nelle Promise JavaScript con try()
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Gestione delle issue type con GitHub
Loggare le query più lente con Entity Framework
Self-healing degli unit test con Copilot in GitHub
Semplificare la gestione dei modelli con Azure AI Foundry Model Router


