22 votes

Extrait de changements pertinents pour l'examen du code

Je suis en train de travailler sur un projet avec une équipe où nous arriver tôt et souvent. Personne archivages sont terminées à la satisfaction de le développeur de faire le changement (y compris les tests si possible), mais parfois le sens du travail change légèrement précédente et s'engage besoin d'être refaites et faire d'une autre manière. Ou, stub code est rempli au plus tard, s'engage.

Quand vient le temps pour l'examen du code, il existe une séquence de commits étiquetés avec le même bug id de suivi nombre. Il est facile d'obtenir une liste de ces changements. Lorsqu'un examinateur regarde à travers les modifications une par une, parfois il y aura un commettre Un qui est annulée ou modifiée par un plus tard commettre B dans le cadre de la même revue. Cela peut rendre l'examen plus difficile.

Si seulement l'un des développeurs a été de travailler sur le fichier pour la durée du changement, alors il est facile de faire un diff entre l'état d'origine du fichier et l'état final du fichier. Le problème se pose quand un autre développeur se fait sans rapport avec les changements dans le même fichier, ou même dans les mêmes fonctions.

Comment gérez-vous cette situation? Existe-il des outils qui, étant donné une séquence de patchs à un fichier, peut donner l'équivalent moral d'une diff entre la première et la dernière versions, mais seulement un sous-ensemble de ces patchs?

Venez pour penser à elle, j'ai pu créer un temporaire de la branche git à partir de avant la première liées à des changements, et de choisir les modifications pertinentes à l'examen. J'espère qu'il ne sera pas trop nombreux conflits qui doivent être résolus (et si il y a, alors l'ensemble du lot doivent être examinés à la fois de toute façon). D'autres idées?

Plus d'infos: Cela arrive à être un grand ancien système où un seul changement peut toucher plusieurs fichiers. Les fichiers sont gros et crufty - trop grand pour se contenter d'examiner le produit final, sans indication de ce qui pourrait avoir changé.

15voto

oefe Points 9122

Une approche (utilisation de subversion de la terminologie, mais des approches similaires devrait fonctionner avec d'autres systèmes, aussi):

Découvrez une copie de travail à une révision juste avant les premiers changements. Ensuite fusionner toutes liées les commits dans votre copie de travail.

Vous avez maintenant une copie de travail qui diffère de sa base seulement par les changements pertinents. Vous pouvez consulter directement, ou créer un patch de pour la révision.

Si certains sans rapport avec le changement après la révision de base des chevauchements avec le passé en revue les changements, vous obtiendrez peut-être un conflit de fusion, mais ce devrait être rare.

8voto

Brian R. Bondy Points 141769

Je pense que vous devriez être ramification de faire vos modifications. Voir mon post ici.

3voto

krosenvold Points 35979

Il s'avère que vous pouvez le faire assez bien dans IntelliJ IDEA si vous avez cet outil:

Sélectionnez Le Contrôle De Version | Montrer Les Changements De Point De Vue.

Sur le côté gauche, vous sélectionnez repository et cliquez sur toutes les révisions que vous voulez examiner.

Dans le volet de droite, vous obtiendrez une liste de tous les fichiers qui sont touchés par les révisions que vous avez sélectionné. Lorsque vous choisissez "diff", vous verrez les changements internes dans les révisions. Les réorganisations internes des œuvres qui se produisent dans le commet ne sont pas représentés (comme prévu)

1voto

Michael Anderson Points 21181

Je fais à peu près ce que vous avez suggéré. Créer une direction générale de l'examen. Obtenir le développeur(s) whos changements sont examinés afin d'en faire du cherry-picking dans cette branche. Diff la racine de la branche avec la tête.

Je serais probablement aussi de créer un petit outil pour récupérer tous les archivages qui correspondent à un bug de suivi de l'id de la balise et les réduire en purée dans un approximatif script pour faire du cherry picking. Je serais certainement donner à l'utilisateur la possibilité de modifier ce script avant de l'exécuter même si, comme je suis sûre que certaines choses deviennent miss balisés.

L'examen sur la branche. Faire les modifications sur la branche. Cherry pick les modifications dans le tronc. Jeter la direction générale de l'examen si vous ne voulez pas plus.

1voto

Filburt Points 7490

À partir d'une Subversion point de vue

Compte tenu de vos besoins, je voudrais exécuter du code des examens par comparaison à l'encontre d'une balise à partir de la dernière révision; c'est à dire la diff entre les deux balises.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X