Lors de la correction d'un commit antérieur, dois-je rebaser ou ajouter un commit de correction distinct?

11

Un scénario courant dans le développement de logiciels est le code examinant le code de quelqu'un d'autre. Un outil courant pour ce faire est d'ouvrir une demande de tirage.

Ma question est, lorsque des problèmes sont détectés dans la revue, si les changements

  1. être validé séparément (nouveau commit)
  2. ou si le commit existant doit être modifié (en supposant que personne ne se branche depuis votre commit précédent ... car la réécriture de l'historique à partir d'une branche partagée est une mauvaise nouvelle).

Pour le premier scénario, il est facile de suivre les modifications incrémentielles, bien qu'il ajoute un peu de bruit à l'historique des validations. La deuxième option présente les avantages et les inconvénients inversés.

loeschg
la source
14
Vous dites «bruit» au commit, mais j'ai lu que c'est une histoire exacte . Pourquoi essayer de masquer ce qui s'est réellement passé dans l'historique des commit? Un examen de code est un examen de code, pas besoin de le peindre comme autre chose. Mon vote irait au commit séparé, et non au rebase dans ce cas.
Thomas Stringer
3
Habituellement, je fais les deux. Publiez chaque validation séparément, puis une fois la révision terminée, rebasez et fusionnez. GitHub maintient les discussions sur la demande de tirage même après la suppression ou le remplacement de ces validations, il n'y a donc pas de perte d'historique substantielle due au rebasage. Tu reçois le meilleur des deux mondes.
Ajedi32
1
J'ai des sentiments mitigés quant à savoir si j'ai commis quelque chose qui, d'une manière ou d'une autre, j'ai déterminé plus tard, plante le système. ces commits, si je découvre bientôt leur défaut de fabrication, sont ceux que je voudrais faire revenir sur l'histoire. mais ce ne sont que des bits, ils ne coûtent pas si cher, donc la chose la plus sûre, la plus rentable et la plus cohérente à faire (comme dans la doctrine) est toujours de s'engager séparément et de laisser l'épave de la voiture dans le fossé pour que tout le monde puisse voir maintenant et à jamais. .... et vous pouvez marquer chaque branche défectueuse avec un message sans équivoque pour ne pas en tirer parti, donc pas de branche partagée.
robert bristow-johnson
Pouvez-vous expliquer ce qu'est le "rebasage" et quand je le souhaiterais?
Kilian Foth

Réponses:

23

Vous supposez que le correctif n'introduit aucun nouveau problème et corrige les anciens. Mais de nombreux correctifs valent la peine d'être examinés par eux-mêmes - et cela est probablement beaucoup plus facile lorsque les modifications incrémentielles peuvent être examinées séparément.

Doc Brown
la source