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.61. 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.

By clicking on the Options button you can specify how the patch is created. For example you can specify that changes in line endings or whitespaces are not included in the final patch file.

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, faire un peu plus de modifications aux 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

Do not save the patch file with a .txt extension if you intend to send it via email to someone else. Plain text files are often mangled with by the email software and it often happens that whitespaces and newline chars are automatically converted and compressed. If that happens, the patch won't apply smoothly. So use .patch or .diff as the extension when you save the patch file.

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.

If you prefer, you can create a patch file from within the Commit or Check for Modifications dialogs. Just select the files and use the context menu item to create a patch from those files. If you want to see the Options dialog you have to hold shift when you right click.

Appliquer un patch

Les fichiers patch s'appliquent à 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 de le savoir, regardez simplement la première ligne du fichier patch. Par exemple, si le premier fichier travaillé était doc/source/english/chapter1.xml et la première ligne dans le patch est Index: english/chapter1.xml alors vous devez appliquer le patch sur le répertoire english. Cependant, pour le cas où 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.