Le mécanisme
Ce qu’est l’API, et ce qu’elle n’est délibérément pas.
Deux portes, aucune interpolation dans le shell, et une liste d’omissions choisie pour que rien d’accessible depuis un panneau ne puisse détruire du travail qui n’est pas déjà validé.
01Aucune chaîne d’un plugin n’atteint la ligne de commande de git
La branche, l’état, l’historique, les dépôts distants et les diffs sont lus à travers des arguments que l’hôte construit. Un plugin n’a nulle part où injecter une option, et c’est pourquoi la lecture ne demande aucune permission.
02L’écriture est gardée deux fois, et vérifiée tard
Le manifeste déclare "git": "write" ; vous l’accordez dans Gérer les plugins. Le consentement est consigné face à une empreinte des capacités acceptées et relu au moment de chaque appel, donc une mise à jour qui demande davantage doit redemander, et révoquer arrête un plugin déjà en cours.
03Le message de validation passe par l’entrée standard
Jamais en argument. Les chemins, les références, les noms et les URL de dépôts distants sont refusés d’emblée s’ils pouvaient se lire comme des options.
04Les panneaux peuvent recevoir de la saisie
Un nœud de champ avec un gestionnaire onSubmit est ce qui rend un message de validation possible dans un panneau latéral. Le plugin fournit la valeur initiale et la vue possède ce qui est tapé ensuite, donc un redessin n’emporte pas la moitié d’une phrase.
05Les confirmations destructrices appartiennent à l’hôte
Abandonner des modifications suivies et retirer un dépôt distant sont confirmés par Linelark lui-même, avant l’appel. Un plugin ne peut pas afficher cette fenêtre, et un plugin qui le pourrait serait la mauvaise chose à qui la confier.
06Les diffs s’ouvrent en deux fichiers, pas en patch
Un plugin transmet un diff unifié et l’éditeur dessine les deux versions côte à côte, alignées, numérotées dans leurs propres fichiers, les longues lignes repliées. Un plugin qui propose des fusions ajoute des flèches au milieu.
07Les opérations longues sont asynchrones
Fetch, pull, push et les lecteurs asynchrones tournent hors du fil principal, pour qu’un panneau ne fige pas l’éditeur pendant que le réseau traîne.