Le dernier jour de la semaine de travail se terminait ...

Le dernier jour de la semaine de travail s'est terminé. Je me suis fait du café dans la cuisine du bureau, en me demandant comment nous pourrions réduire la file d'attente du pool de demandes, qui s'est considérablement accru depuis l'introduction du guide de révision . Il semble que des règles simples aient provoqué une longue correspondance dans les commentaires au pool de demandes entre les membres de l'équipe de révision et les développeurs du framework.

image

Rien ne laissait présager. Il faisait nuit.

Soudain, une conversation de travail bruissait de messages:
- Pourquoi ma demande de retrait a-t-elle été supprimée?
- Et mes demandes de tir ont frappé!
- Et le mien!

Après seulement quelques minutes d'investissement, nous avons découvert que cela s'était produit parce que quelqu'un avait supprimé la branche de travail Bootstrap, où plus de 40 personnes étaient entrées clandestinement pendant plus de trois mois. Encore une fois, afin de pouvoir réaliser toute l'étendue du problème, une quarantaine de personnes y ont versé du code pendant plus de trois mois.

image

Les collègues ont immédiatement commencé à jaillir avec des idées que nous avons tous des copies locales de cette branche, et créons cette branche à partir de zéro.

D'après ma propre expérience, je sais que les décisions hâtives et l'improvisation ne mènent à rien de bon, alors j'ai demandé à tout le monde de ne rien faire et de littéralement «retirer leurs mains du clavier».

image

Donc, la disposition est vendredi soir, un bureau presque vide, une succursale perdue avec une énorme base de code. Si ce problème n'est pas résolu ici et maintenant, il y a une chance que la situation empire si d'autres développeurs qui ne connaissent pas la situation actuelle se connectent au travail le week-end (nous lisons tous attentivement le chat de travail, non? ).

J'ai poliment demandé dans le chat qui supprimait la branche Bootstrap, et un jeune développeur, récemment inclus dans le travail, a admis qu'il l'avait fait par erreur. "Désolé".

image

J'attrape un spécialiste qui a réussi à arriver par le bras, et nous nous précipitons vers un jeune développeur qui traverse en ce moment une crise existentielle, et dont le lieu de travail, par chance, est dans le même bureau que nous.

Bien sûr, nous avons restauré la branche - un peu de magie magique, et tout a fonctionné. Vous ne pouvez pas dire plus de 20 requêtes de tirage qui ont disparu dans les entrailles de GitHub. Désagréable, mais pas fatal.
Il est temps de respirer, de comprendre ce qui s'est passé et de tirer des conclusions.

image

La principale question est pourquoi? La réponse, en général, est triviale - par accident. Quelque chose n'allait pas avec le code qui a été commis dans sa propre branche de travail - rien de criminel, c'était juste du code laid et même si vous annulez le commit, il reste dans l'histoire. Par conséquent, le développeur a décidé de démolir toute sa branche de travail et de la recréer. De zéro. Et la branche Bootstrap est tombée sous le coup d'une main chaude. Vendredi. Soirée. Misklik, oui.

image

GitHub vous permet d'annuler l'opération de suppression, mais uniquement jusqu'à ce que la page soit mise à jour et que cette chance n'ait pas été utilisée.

Cette situation aurait-elle pu être évitée? Oui, vous pouvez. Par défaut, toute personne disposant d'un accès en écriture à votre référentiel peut supprimer n'importe quelle branche. Cependant, GitHub vous permet de créer une règle de protection de branche pour une ou plusieurs branches.

image

Où il est important de s'assurer que la case correspondante n'est pas cochée.

image

Cela n'a pas été fait pour la branche bootstrap, et cela nous a rattrapés.

Dans le résidu sec:

  1. Ils ont sauvé la branche.
  2. Désormais, sur toute branche dans laquelle plusieurs personnes contribuent, nous installons la règle de protection. Ce que je recommande de ne pas oublier de tout faire.
  3. Prise en charge du package BootStrap dans JDI Light, nous avons finalement implémenté et déployé. Mais ce que c'est et pourquoi - c'est une autre histoire ...

All Articles