Créer et appliquer des patches

Pour les projets open-source (comme celui-ci), tout le monde a accès au dépôt en lecture et tout le monde peut contribuer au projet. Alors comment ces contributions sont-elles contrôlées ? Si tout le monde pouvait livrer des changements, le projet serait instable en permanence et probablement cassé en permanence. Dans cette situation, le changement est géré en soumettant un fichier patch à l'équipe de développement, qui a accès en écriture. Ils peuvent passer en revue le patch d'abord et ensuite le soumettre au dépôt ou le renvoyer à l'auteur.

Les fichiers patch sont simplement des fichiers de différences unifiées montrant les différences entre votre copie de travail et la révision de base.

Créer un patch

D'abord vous devez faire et tester vos changements. Alors au lieu d'utiliser TortoiseSVNLivrer... sur le dossier parent, vous sélectionnez TortoiseSVNCréer un patch...

Figure 4.63. La boîte de dialogue Créer un patch

La boîte de dialogue Créer un patch

Vous pouvez maintenant choisir les fichiers que vous voulez inclure dans le patch, comme vous le feriez avec une livraison complète. Cela produira un unique fichier contenant un résumé de tous les changements que vous avez faits aux fichiers sélectionnés depuis la dernière mise à jour du dépôt.

Les colonnes dans cette boîte de dialogue peuvent être personnalisées de la même manière que les colonnes dans la boîte de dialogue Vérifier les modifications. Lisez la section intitulée « Statut local et distant » pour plus de détails.

En cliquant sur le bouton Options, vous pouvez spécifier comment le patch est créé. Par exemple, vous pouvez spécifier que les changements de caractères de fin de ligne ou d'espacement ne sont pas inclus dans le fichier de patch final.

Vous pouvez produire des patches séparés contenant des changements sur des jeux différents de fichiers. Bien sûr, si vous créez un fichier patch, faites d'autres changements dans les mêmes fichiers et créez ensuite un autre patch, le deuxième fichier patch inclura les deux jeux de changements.

Sauvegardez juste le fichier en utilisant un nom de fichier de votre choix. Les patches peuvent avoir l'extension de votre choix, mais selon la convention ils devraient utiliser les extensions .patch ou .diff. Vous êtes maintenant prêt à soumettre votre patch.

Astuce

Ne sauvegardez pas le fichier patch avec une extension .txt si vous avez l'intention de l'envoyer par e-mail à quelqu'un d'autre. Les fichiers texte sont souvent abîmés par les logiciels de messagerie et les caractères d'espacement et de fin de ligne sont souvent convertis et compressés automatiquement. Si cela se produit, il y aura des problèmes pour appliquer le patch. Donc utilisez .patch ou .diff comme extension quand vous sauvegardez le fichier de patch.

Vous pouvez aussi sauvegarder le patch dans le presse-papier plutôt que dans un fichier. Cela permet, par exemple, de le coller dans un mail afin de le transmettre à d'autres personnes pour une revue. Ou alors, si vous avez deux copies de travail sur une machine et que vous vouliez reporter des changements de l'une à l'autre, copier le patch dans le presse-papier est un moyen commode pour le faire.

Si vous préférez, vous pouvez créer un fichier de patch depuis les boîtes de dialogue Livrer ou Vérifier les modifications. Sélectionnez les fichiers et utilisez l'élément du menu contextuel pour créer un patch à partir de ces fichiers. Si vous voulez voir la boîte de dialogue Options, vous devez garder la touche Maj appuyée en faisant un clic droit.

Appliquer un patch

Les fichiers patch sont appliqués sur votre copie de travail. Cela doit être fait au même niveau de dossier qui a été utilisé pour créer le patch. Si vous n'êtes pas sûr duquel il s'agit, regardez simplement la première ligne du fichier de patch. Par exemple, si le premier fichier sur lequel vous avez travaillé était doc/source/francais/chapitre1.xml et que la première ligne dans le fichier de patch est Index: francais/chapitre1.xml alors vous devez appliquer le patch sur le dossier doc/source/. Cependant, du moment que vous êtes dans la bonne copie de travail, si vous choisissez le mauvais niveau de dossier, TSVN le remarquera et suggérera le niveau correct.

Pour appliquer un patch à votre copie de travail, vous devez avoir au moins l'accès en lecture pour le dépôt. La raison à cela est que le programme de fusion doit faire référence aux changements de la révision avec laquelle ils ont été faits par le développeur distant.

Depuis le menu contextuel de ce dossier, cliquez sur TortoiseSVNAppliquer le patch... Cela affichera une boîte de dialogue Ouvrir un fichier vous permettant de choisir le fichier patch à appliquer. Par défaut, seuls les fichiers .patch ou .diff sont affichés, mais vous pouvez opter pour "Tous les fichiers ". Si vous avez précédemment sauvegardé le patch dans le presse-papier, vous pouvez utiliser le bouton Ouvrir depuis le presse-papier dans le dialogue d'ouverture de fichiers. Notez que cette option est visible dans le cas où vous avez sauvegardé votre patch dans le presse-papier via le menu TortoiseSVNCréer un patch.... La copie d'un patch du presse-papier vers une autre application ne fera pas appaître ce bouton.

Alternativement, si le fichier patch a une extension .patch ou .diff, vous pouvez faire un clic droit dessus directement et sélectionnez TortoiseSVNAppliquer un patch.... Dans ce cas, vous serez invité à entrer un emplacement de copie de travail.

Ces deux méthodes offrent juste des façons différentes de faire la même chose. Avec la première méthode, vous choisissez la CdT et naviguez jusqu'au patch. Avec la deuxième, vous choisissez le patch et naviguez jusqu'à la CdT.

Une fois que vous avez sélectionné le fichier patch et l'emplacement de la copie de travail, TortoiseMerge se lance pour fusionner les changements du fichier patch avec votre copie de travail. Une petite fenêtre liste les fichiers qui ont été changés. Double-cliquez sur chacun à son tour, passez en revue les changements et sauvegardez les fichiers fusionnés.

Le patch du développeur distant a maintenant été appliqué à votre copie de travail, donc vous devez livrer pour permettre à tous les autres d'avoir accès aux changements depuis le dépôt.