Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
La branche par défaut est la première branche que Git va extraire sur un nouveau clone. En outre, les demandes de tirage ciblent cette branche par défaut.
Nous allons parcourir le processus de modification de la branche par défaut. Nous aborderons également d’autres éléments que vous devez prendre en compte et mettre à jour lors de cette modification. Enfin, nous examinerons un outil pour faciliter la transition.
Prerequisites
| Catégorie | Spécifications |
|---|---|
| Accès au projet | Membre d’un projet. |
| Permissions | - Afficher le code dans des projets privés : accès au moins de base . - Clonez ou contribuez au code dans des projets privés : membre du groupe de sécurité Contributeurs ou autorisations correspondantes dans le projet. - Définir des autorisations de branche ou de référentiel : gérer les autorisations pour la branche ou le référentiel. - Modifier la branche par défaut : modifiez les autorisations des stratégies pour le référentiel. - Importez un référentiel : membre du groupe de sécurité Administrateurs de projet ou de l’autorisation Créer au niveau du projet Git surAutoriser. Pour plus d'informations, voir Définir les autorisations de référentiel Git. |
| Services | Dépôts activés. |
| Outils | Optional. Utilisez les commandes az repos : Azure DevOps CLI. |
Note
Dans les projets publics, les utilisateurs disposant d’un accès aux parties prenantes ont un accès complet à Azure Repos, notamment l’affichage, le clonage et la contribution au code.
| Catégorie | Spécifications |
|---|---|
| Accès au projet | Membre d’un projet. |
| Permissions | - Afficher le code : Accès de base au moins. - Cloner ou contribuer au code : membre du groupe de sécurité Contributeurs ou autorisations correspondantes dans le projet. |
| Services | Dépôts activés. |
Définir une nouvelle branche par défaut
Vous pouvez utiliser une branche autre que main pour les nouvelles modifications ou modifier votre ligne de développement principale dans votre dépôt. Pour modifier le nom de branche par défaut pour les nouveaux référentiels, consultez Tous les paramètres et stratégies de référentiels.
Pour modifier la branche par défaut de votre dépôt pour fusionner de nouvelles demandes de tirage, vous avez besoin d’au moins deux branches. S’il n’existe qu’une seule branche, il s’agit déjà de la valeur par défaut. Vous devez créer une deuxième branche pour modifier la valeur par défaut.
Note
La modification de la branche par défaut nécessite l’autorisation Modifier les stratégies . Pour plus d'informations, voir Définir les autorisations de référentiel Git.
Sous votre dépôt de projet, sélectionnez Branches.
Dans la page Branches , sélectionnez Autres options en regard de la nouvelle branche par défaut souhaitée, puis choisissez Définir comme branche par défaut.
Après avoir défini la nouvelle branche par défaut, vous pouvez supprimer la valeur par défaut précédente si vous le souhaitez.
Il existe d’autres aspects à prendre en compte avant d’apporter cette modification.
Choisir un nom
Git 2.28 a ajouté la possibilité de choisir un nom de branche initiale.
En même temps, Azure Repos, GitHub et d’autres fournisseurs d’hébergement Git ont ajouté la possibilité de choisir un autre nom de branche initiale.
Auparavant, la branche par défaut était presque toujours nommée master.
Le nom alternatif le plus populaire est main.
Les options moins courantes incluent trunk et development.
En l’absence de restrictions des outils que vous utilisez ou de l’équipe sur utilisant, tout nom de branche valide fonctionne.
Mettre à jour d’autres systèmes
Lorsque vous passez à une autre branche par défaut, d’autres parties de votre flux de travail peuvent être affectées. Vous devez prendre en compte ces parties lorsque vous planifiez une modification.
Pipelines
Mettez à jour les déclencheurs CI pour tous les pipelines. Les pipelines du concepteur peuvent être modifiés sur le web. Les pipelines YAML peuvent être modifiés dans leurs référentiels respectifs.
Demandes de tirage en cours
Reciblez chaque demande de tirage ouverte vers la nouvelle branche par défaut.
Clones existants
Les nouveaux clones du référentiel obtiennent la nouvelle branche par défaut.
Après le changement, tout le monde disposant d’un clone existant doit s’exécuter git remote set-head origin -a (en remplaçant origin par le nom de son serveur distant s’il s’agit d’un autre élément) pour mettre à jour son affichage de la branche par défaut de la branche distante.
Les nouvelles branches futures doivent être basées sur la nouvelle valeur par défaut.
Liens entrants
Certains signets, documents et autres fichiers non codés pointant vers des fichiers dans Azure Repos doivent être mis à jour. Le nom de branche d’un fichier ou d’un répertoire peut apparaître dans l’URL.
Si une URL contient une chaîne de requête pour version, par exemple &version=GBmybranchname, cette URL doit être mise à jour.
Heureusement, la plupart des liens vers la branche par défaut n’ont pas de version segment et peuvent être laissés as-is.
En outre, une fois que vous supprimez l’ancienne branche par défaut, les tentatives d’accès à celui-ci seront prises vers la nouvelle branche par défaut de toute façon.
Mise en miroir temporaire
Un dépôt Git ne peut avoir qu’une seule branche par défaut. Toutefois, pendant un certain temps, vous pouvez configurer la mise en miroir ad hoc entre votre ancienne valeur par défaut et votre nouvelle valeur par défaut. De cette façon, si vos utilisateurs finaux continuent d’envoyer (push) à l’ancienne valeur par défaut, ils n’auront pas besoin de rétablir le travail à leur fin. Nous allons utiliser Azure Pipelines pour configurer cette mise en miroir temporaire.
Note
Cette section utilise le langage qui est à l’opposé de la perspective de Microsoft.
Plus précisément, le mot master apparaît à plusieurs endroits cohérent avec la façon dont il a été utilisé dans Git.
L’objectif de cette rubrique est d’expliquer comment basculer vers un langage plus inclusif, tel que main.
Éviter toute mention de master rendre les directions beaucoup plus difficiles à comprendre.
Pipeline de mise en miroir
Note
Ces instructions ne sont pas insensés, et la configuration de votre référentiel peut nécessiter des modifications supplémentaires telles que des autorisations et des stratégies de relâchement.
Avertissement
Si les anciennes et nouvelles branches par défaut sont mises à jour avant l’exécution de ce pipeline, le pipeline ne pourra pas mettre en miroir les modifications. Une personne doit fusionner manuellement l’ancienne branche par défaut dans la nouvelle branche par défaut pour l’exécuter automatiquement.
Pour toutes les builds CI existantes, mettez-les à jour pour les déclencher sur votre nouvelle branche par défaut au lieu de l’ancienne.
Accordez à votre dépôt l’autorisation Contribuer à l’identité de build. Accédez auxréférentiels des>paramètres> du projet (votre dépôt)>Autorisations. Il peut y avoir jusqu’à deux identités, une pour le service de génération de collection de projets et l’autre pour le service de génération de projet. Vérifiez que l’autorisation Contribuer indique Autoriser.
Si la nouvelle branche par défaut a des stratégies de branche, accordez également l’identité de build aux stratégies de contournement lors de l’envoi d’autorisations . Cette autorisation est un risque de sécurité, car un utilisateur malveillant peut créer un pipeline pour insérer du code dans un référentiel dans votre projet. Lorsque la mise en miroir n’est plus nécessaire, veillez à supprimer cette autorisation.
Ajoutez un nouveau fichier
mirror.ymlà votre référentiel dans la nouvelle branche par défaut. Dans cet exemple, nous supposons que l’ancienne branche par défaut étaitmasteret que la nouvelle branche estmain. Mettez à jour les branches déclenchées et lagit pushligne si vos noms de branche sont différents.
trigger:
branches:
include:
- main
- master
pool: { vmImage: ubuntu-latest }
steps:
- checkout: self
persistCredentials: true
- script: |
git checkout $(Build.SourceBranchName)
git push origin HEAD:master HEAD:main
displayName: Mirror old and new default branches
- Créez un pipeline, en choisissant « Git Azure Repos » et « Fichier YAML Azure Pipelines existant » dans l’Assistant.
Choisissez le
mirror.ymlfichier que vous avez ajouté à l’étape précédente. Enregistrez et exécutez le pipeline.
Résolution des problèmes
Ce pipeline s’exécute chaque fois qu’il y a une transmission (push) vers master ou vers main.
Il les maintient synchronisés tant que les nouvelles validations n’arrivent pas simultanément sur les deux branches.
Si le pipeline commence à échouer avec un message d’erreur tel que « Les mises à jour ont été rejetées parce qu’un conseil de branche push se trouve derrière son distant », une personne doit fusionner l’ancienne branche dans la nouvelle branche en main.
- Clonez le référentiel et
cddans son répertoire. - Consultez la nouvelle branche par défaut avec
git checkout main(s’il s’agitmainde votre nouvelle branche par défaut). - Créez une branche pour intégrer les deux branches avec
git checkout -b integrate. - Fusionnez l’ancienne branche par défaut avec
git merge master(s’il s’agitmasterde votre ancienne branche par défaut). - Envoyez (push) la nouvelle branche, puis ouvrez et terminez une demande de tirage (pull request) dans la nouvelle branche par défaut.
- Le pipeline de mise en miroir doit ensuite s’occuper de la mise en miroir de la validation de fusion vers l’ancienne valeur par défaut.