# Règles de fusion

Les règles de fusion vous permettent de définir des exigences qui doivent être satisfaites avant que les demandes de modification puissent être fusionnées, comme l’obtention d’une revue d’un utilisateur spécifique, ou l’exigence d’un sujet ou d’une description pour la demande de modification.

Ces règles aident à maintenir la qualité du contenu et à garantir des processus de revue appropriés dans tout votre workflow de documentation.

Lorsque des règles de fusion sont configurées, elles évaluent automatiquement les demandes de modification avant qu’elles puissent être fusionnées. Si une règle n’est pas satisfaite, la fusion sera bloquée jusqu’à ce que les exigences soient remplies.

Cela fournit un moyen automatisé d’appliquer les standards de collaboration et de revue de votre équipe.

## Utilisation des règles de fusion

Vous pouvez configurer les règles de fusion à différents niveaux afin de les adapter au workflow de votre équipe :

### Configuration au niveau de l’organisation

Les organisations peuvent définir des règles de fusion par défaut que tous les espaces héritent. Cela assure une cohérence entre plusieurs espaces tout en permettant aux espaces individuels de personnaliser leurs règles selon leurs besoins.

Pour configurer les règles de fusion de votre organisation, ouvrez le menu de l’organisation en haut de la barre latérale et choisissez **Paramètres** <picture><source srcset="broken-reference" media="(prefers-color-scheme: dark)"><img src="https://3903131528-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkEGS7hzeqa35sMXQZ4X%2Fuploads%2FwkBqgOPry9HAcW4cxJk0%2Fsettings.svg?alt=media&#x26;token=67bdbb00-ebf3-4a2d-9df8-0c822406f71c" alt=""></picture>. Dans l’écran des paramètres, sélectionnez **Règles de fusion** dans la section **Organisation** de la barre latérale. Ici, vous pouvez spécifier les règles de fusion pour l’ensemble de votre organisation.

Choisissez entre une fusion sans restriction, ou sélectionnez l’une des options prédéfinies à appliquer aux demandes de modification dans toute votre organisation.

### Configuration au niveau de l’espace

Que vous ayez ou non activé les règles de fusion à l’échelle de l’organisation, chaque espace peut avoir ses propres exigences de fusion adaptées à son contenu et à la structure de son équipe.

Cela vous donne la flexibilité d’avoir des règles plus strictes pour la documentation importante et des règles plus souples pour le contenu brouillon.

Lors de la configuration des règles de fusion pour un espace, vous pouvez choisir de :

* **Hériter** des règles de fusion de votre organisation
* **Définir des règles personnalisées** spécifiques à cet espace
* **Désactiver les règles de fusion** entièrement

{% hint style="info" %}
Si vous héritez des règles de l’organisation, toute modification des règles de fusion de l’organisation s’appliquera automatiquement à l’espace.
{% endhint %}

Pour configurer les règles de fusion de votre organisation, ouvrez le **menu d’actions** <i class="fa-ellipsis">:ellipsis:</i> en haut à gauche de l’éditeur, puis sélectionnez **Règles de fusion**. Ici, vous pouvez spécifier si vous souhaitez hériter des règles de fusion de votre organisation ou en configurer de nouvelles propres à cet espace.

## Évaluation des règles

### Comment fonctionnent les règles

Lorsqu’une personne souhaite fusionner une demande de modification, GitBook évaluera toutes les règles configurées dans l’ordre :

* Toutes les règles d’une configuration doivent être validées pour qu’une fusion soit autorisée
* Les règles sont évaluées dans l’ordre dans lequel elles apparaissent dans votre configuration
* Si une règle échoue, la fusion est bloquée avec un message d’erreur approprié
* Les règles avec capacité de contournement peuvent annuler les échecs précédents

### Règles de contournement

Certaines règles ont des capacités de contournement (comme **Autoriser des acteurs spécifiés à contourner les exigences**). Ces règles spéciales peuvent annuler les échecs d’autres règles. Si une règle de contournement est évaluée à vrai, la fusion sera autorisée même si d’autres règles ont échoué.

## Bonnes pratiques

Lors de la configuration des règles de fusion, tenez compte de ces recommandations :

* **Commencez simplement**: Commencez par des règles de base, comme exiger au moins une revue.
* **Progressez graduellement**: Ajoutez des exigences plus spécifiques à mesure que votre équipe grandit et que les workflows mûrissent.
* **Utilisez le contournement avec prudence**: N’accordez des უფლებ de contournement qu’aux administrateurs de confiance.
* **Révisez régulièrement**: Ajustez les règles en fonction des modèles réels de workflow de votre équipe.
* **Testez d’abord**: Lorsque c’est possible, testez les modifications de règles dans un espace de test avant de les appliquer aux espaces de production.

## Types de règles disponibles

### Exigences de revue

<table><thead><tr><th width="279.703125">Règle</th><th>Description</th></tr></thead><tbody><tr><td><strong>Exiger au moins une revue</strong></td><td>Garantit qu’au moins un membre de l’équipe a examiné la demande de modification avant qu’elle puisse être fusionnée.</td></tr><tr><td><strong>Exiger que toutes les revues soient approuvées</strong></td><td>Toutes <strong>terminées</strong> (non demandées) les revues doivent être des approbations. Si un réviseur a demandé des modifications ou rejeté la demande de modification, la fusion sera bloquée.</td></tr><tr><td><strong>Exiger une revue par des acteurs spécifiés</strong></td><td>Nécessite l’approbation de tous les utilisateurs spécifiés. Vous pouvez sélectionner des membres précis de l’équipe qui doivent examiner et approuver la demande de modification avant qu’elle puisse être fusionnée.</td></tr><tr><td><strong>Exiger une revue par l’un des acteurs spécifiés</strong></td><td>Nécessite l’approbation d’au moins un des utilisateurs spécifiés. C’est utile lorsque vous avez plusieurs réviseurs qualifiés mais qu’une seule approbation du groupe suffit.</td></tr><tr><td><strong>Exiger une revue de l’agent Docs (bientôt disponible)</strong></td><td>Nécessite une revue de l’agent IA de GitBook. Cela garantit que des vérifications automatisées de qualité sont effectuées sur les modifications de contenu avant la fusion.</td></tr></tbody></table>

### Exigences relatives à la demande de modification

<table><thead><tr><th width="279.703125">Règle</th><th>Description</th></tr></thead><tbody><tr><td><strong>Exiger une demande de modification à jour</strong></td><td>La demande de modification doit être à jour par rapport à la branche de contenu principale. Si le contenu principal a été mis à jour depuis la création de la demande de modification, vous devrez la rebaser ou la mettre à jour avant de la fusionner.</td></tr><tr><td><strong>Exiger un sujet</strong></td><td>La demande de modification doit avoir un sujet/titre descriptif. Les sujets vides bloqueront la fusion.</td></tr><tr><td><strong>Exiger une description</strong></td><td>La demande de modification doit inclure une description expliquant quelles modifications ont été apportées et pourquoi.</td></tr></tbody></table>

### Options avancées

<table><thead><tr><th width="279.703125">Règle</th><th>Description</th></tr></thead><tbody><tr><td><strong>Autoriser des acteurs spécifiés à contourner les exigences</strong></td><td>Vous pouvez désigner des utilisateurs spécifiques autorisés à contourner toutes les autres exigences des règles de fusion. C’est utile pour les administrateurs ou dans des situations d’urgence où les règles doivent être outrepassées.</td></tr><tr><td><strong>Expression personnalisée</strong></td><td>Vous pouvez créer des règles de fusion avancées à l’aide d’expressions JavaScript personnalisées. Cela vous permet de définir une logique complexe basée sur le contexte d’évaluation, avec accès aux propriétés de la demande de modification, des revues et de l’utilisateur qui tente de fusionner.</td></tr></tbody></table>

#### Expressions personnalisées

Lorsque vous créez une expression personnalisée, elle sera évaluée chaque fois que quelqu’un essaiera de fusionner une demande de modification. Si l’expression renvoie `true`vrai `false`, la fusion est autorisée. Si elle renvoie

{% hint style="info" %}
Les expressions personnalisées prennent en charge la syntaxe JavaScript standard (ES2022) et ont une longueur maximale de 1024 caractères.
{% endhint %}

**Variables de contexte disponibles :**

* `changeRequest.subject` - Le sujet/titre de la demande de modification
* `changeRequest.description` - La description de la demande de modification
* `changeRequest.outdated` - Si la demande de modification est obsolète (booléen)
* `changeRequest.createdBy.id` - ID de l’utilisateur qui a créé la demande de modification
* `reviews` - Tableau d’objets de revue, chacun contenant :
  * `reviews[].status` - Statut de la revue (`"approved"` ou `"changes_requested"`)
  * `reviews[].reviewer.id` - ID du réviseur
* `actor.id` - ID de l’utilisateur qui tente de fusionner

**Exemples d’expressions courantes :**

{% code title="Exiger plusieurs revues approuvées" %}

```javascript
reviews.filter(r => r.status === "approved").length >= 2
```

{% endcode %}

{% code title="Exiger l’approbation d’un utilisateur spécifique" %}

```javascript
reviews.some(r => r.reviewer.id === "harry" && r.status === "approved")
```

{% endcode %}

{% code title="Exiger une description pour les changements urgents" %}

```javascript
!changeRequest.subject.includes("[URGENT]") || !!changeRequest.description
```

{% endcode %}

{% code title="Autoriser l’auto-fusion uniquement pour les modifications mineures" %}

```javascript
changeRequest.createdBy.id === actor.id ? changeRequest.subject.startsWith("[minor]") : true
```

{% endcode %}
