web-dev-qa-db-fra.com

Pourquoi ne commettez-vous pas immédiatement les modifications fusionnées?

Mon bureau utilise Git et SourceTree pour notre contrôle de version. Cela est dû au fait que lorsque j'ai rejoint, il n'y avait aucun contrôle de version et SourceTree était le seul système que j'aie jamais utilisé. Je ne suis en aucun cas un expert, mais je suis le plus expérimenté de mes collègues, je suis donc l'expert de facto chargé d'enseigner à tout le monde à utiliser correctement Git et à corriger les erreurs qu'ils font.

Je fais un document tutoriel qui passe par Git et SourceTree et explique chaque étape du processus. Dans le processus Pull, la boîte de dialogue SourceTree vous permet de sélectionner l'option "Valider les modifications fusionnées immédiatement". Je comprends ce que cela fait et pourquoi c'est utile. Ce que je ne comprends pas, c'est pourquoi quelqu'un voudrait pas vouloir utiliser cette fonctionnalité.

Quelqu'un pourrait-il expliquer pourquoi vous ne voudriez jamais que vos modifications fusionnées soient validées automatiquement? J'essaie de comprendre le raisonnement afin de pouvoir mieux expliquer l'utilité de la fonctionnalité et avoir une idée des pièges à rechercher à l'avenir.

Modifier: je ne crois pas que ma question soit un double de la question liée. La question liée demande généralement à quelle fréquence effectuer la validation. Je me demande pourquoi on choisirait de ne pas utiliser une fonctionnalité spécifique liée à la validation des fusions dans SourceTree.

17
David K

Je ne voudrais pas utiliser cette fonctionnalité.

Le fait qu'il n'y ait pas eu de conflits signifie à peu près que les modifications fusionnées dans ma branche ne sont pas à peu près dans les mêmes lignes de code que celles que j'ai faites. Cela ne signifie pas que ces modifications sont compatibles avec mes modifications. Cela ne signifie pas que le code sera compilé, que le code fonctionnera ou que les tests réussiront.

En d'autres termes, en utilisant cette option, je me retrouve potentiellement avec une fausse validation de code qui peut ne pas être en bon état et qui nécessite une nouvelle validation pour être corrigée. Comme je fais ce travail de toute façon, et comme je ne devrais jamais pousser ce faux commit en amont, pas même par erreur (Dieu merci, quelqu'un peut alors fusionner que dans une autre branche!), Je ne vois aucune raison pour créer ce commit en premier lieu.

27
user285148

Après une fusion, des modifications peuvent être apportées aux fichiers du référentiel local. Ces modifications ne sont pas automatiquement validées dans le local, sauf si vous définissez "Valider les modifications fusionnées immédiatement".

Si vous ne définissez pas cette option, les fichiers apparaissent dans SourceTree en tant que modifications non validées.

C'est parce que Git lui-même ne s'engage pas sauf si vous le lui dites explicitement, et SourceTree est une interface graphique Git. Le "Valider les modifications fusionnées immédiatement" option n'est pas tant une option, car c'est un raccourci de commande.

Donc, la raison pour laquelle pas veut utiliser cette fonctionnalité est évidente: vous voulez effectuer la validation manuellement, ou pas du tout.

Supposons que vous tiriez master sur votre branche de fonctionnalité. Un collègue travaille sur une branche de fonctionnalité différente. Ce collègue a une histoire de casser des choses. La fusion contient des modifications apportées au code commun partagé apportées par ce collègue. Donc, vous - avec le reste de l'équipe - ne pas validez les modifications fusionnées jusqu'à ce que vous soyez sûr qu'aucune modification apportée par ce collègue n'affectera votre travail.

Tout simplement parce qu'il n'y a aucune bonne raison - en théorie - de ne pas utiliser cette fonctionnalité, en réalité, il peut y avoir un certain nombre de bonnes raisons. En ce qui concerne votre tutoriel, je dirais simplement que "99 fois sur 100, c'est l'option que vous souhaitez utiliser". Je ne pense pas que vous ayez vraiment besoin d'entrer dans les détails pour ne pas l'utiliser, surtout si les autres sont nouveaux dans le contrôle de version. Tout dépend de la profondeur de votre intention pour le didacticiel.

2
Mark Benningfield

Si vous utilisez un hook post commit pour pousser automatiquement vos commits (comme dans https://stackoverflow.com/a/7925891/6781678 ), vous pourriez avoir besoin cette option pour éviter de pousser certains commit de qualité douteuse.

Je n'utiliserais jamais non plus.

2
Philippe