Je suis en train de travailler sur une nouvelle armureà base de structure de données pour le stockage de contrôle de version de l'histoire. Ce sera sans doute la cause de quelques guerres de religion, à savoir si c'est La bonne Façon De Faire les Choses quand il sort, mais ce n'est pas ma question maintenant.
Ma question a à voir avec ce que la sortie de blâme doit donner. Lorsqu'une ligne de code a été ajouté, supprimé, et fusionnés en lui-même un certain nombre de fois, il n'est pas toujours clair ce que la révision devrait obtenir blâmer pour cela. Notamment cela signifie que lorsqu'une section de code est supprimé, tous les enregistrements de ce avoir été, il y est allé, et il n'y a pas de blâme pour la suppression. Tout le monde je suis allé sur cette question avec a dit que d'essayer de faire mieux n'est tout simplement pas la peine. Parfois les gens mettent dans le hack que la ligne après l'article qui a été supprimé a son blâme changé à partir de ce qu'il était réellement à la révision lorsque l'article a été supprimé. On peut supposer que si la section est à la fin de la dernière ligne obtenir son blâme changé, et si le fichier vents vide alors le reproche fait vraiment disparaître dans l'éther, car il n'y a littéralement de nulle part à gauche pour mettre le blâme de l'information. Pour différentes raisons techniques je ne vais pas utiliser ce hack, mais supposons que la poursuite de mais cette totalement sans-papiers, mais de facto la norme de pratique sera sans polémique (mais n'hésitez pas à la flamme moi et de sortir de votre système).
De passer à ma question. Généralement à blâmer pour chaque ligne vous regardez l'histoire complète de l'endroit où il a été ajouté et retiré de l'histoire et à l'aide de trois voies de fusion (ou, dans le cas de criss-cross se confond, au hasard des conneries) et sur la base des relations entre celles-vous déterminer si la ligne doit avoir été fondée sur son histoire, et si elle ne devrait pas, mais est puis vous marquer comme nouveau avec la révision en cours. Dans le cas où une ligne se produit dans de nombreux ancêtres avec différents accuse ensuite, il choisit celui qui en héritent de façon arbitraire. Encore une fois, je suppose que la poursuite de cette complètement sans-papiers, mais de facto la norme de pratique sera prête pas à controverse.
D'où mon nouveau système diverge, c'est que plutôt que de faire un calcul compliqué de savoir si une ligne doit être dans la révision actuelle basée sur un calcul complexe de toute l'histoire, il regarde simplement les ancêtres immédiats, et si la ligne est dans l'un d'eux, il choisit arbitraire d'hériter de la faute de. Je suis en train de faire ce changement, en général pour des raisons techniques (et c'est tout à fait possible que d'autres blâmer les implémentations de faire la même chose, pour les mêmes raisons techniques et un manque de soin), mais après y avoir réfléchi un peu partie de moi préfère effectivement le nouveau comportement plus intuitive et plus prévisible que l'ancien. De quoi tout le monde pense?