Je souhaite modifier un package, le tester et, espérons-le, soumettre une demande d'extraction par la suite. Comment le faire de manière sûre et efficace? La question peut sembler trop large, j'accepterai la réponse qui couvre les questions suivantes:
Je m'attends à installer une branche distincte d'un package et à pouvoir basculer entre celle-ci et une branche stable sur un coup de tête, avec une recompilation effectuée automatiquement lorsque cela est nécessaire, mais
package.elne semble pas offrir un moyen simple de le faire. Cette réponse sur emacs-SE nous informe que "Si plusieurs copies d'un paquet sont installées, alors la première sera chargée", donc je suppose que l'on pourrait jouer manuellementload-pathmais cela ne semble pas robuste. Quelle est la méthode standard pour sélectionner une version spécifique du package parmi celles installées?Même si je parviens à exposer plusieurs branches à Emacs, pour des ajustements importants, je dois m'assurer que la branche non corrigée est «déchargée» et ses effets secondaires isolés. Est-
unload-featurece que cela gère correctement ou peut-être qu'il a des particularités que tout testeur de packages multi-versions devrait connaître?Comment installer et tester la version locale? La réponse semble dépendre du fait que le package est simple (= un fichier) ou multifichier. EmacsWiki dit à propos des packages multifichiers : « MELPA crée des packages pour vous ». Je doute que je doive (ou devrais) parler à MELPA chaque fois que je change un
defunformulaire dans un package multifichier, mais la question demeure. Au moins, je dois informer le gestionnaire de paquets de la version locale, et si oui, comment dois-je procéder?Quels noms dois-je attribuer aux versions locales des packages? Supposons que je veuille travailler sur plusieurs fonctionnalités ou bugs simultanément, ce qui signifie avoir plusieurs branches. Emacs ne permettra pas de nommer les versions de manière descriptive (dans le sens de
20170117.666-somebugorfeature). Je suppose que je pourrais renommer le package lui-même, un suffixe par branche, mais encore une fois, comme jouer manuellement avecload-pathQ1, c'est un vilain hack, donc je ne vais pas l'essayer avec quelque chose que j'ai l'intention d'envoyer en amont, sauf si c'est une pratique largement acceptée .
Les questions sont probablement naïves, car je n'ai jamais écrit de correctif ni appliqué de correctif avec git ou un vcs similaire. Cependant, pour de nombreux utilisateurs d'Emacs, patcher un paquet Emacs pourrait être leur tout premier (ou peut-être le seul) effort de programmation sociale, c'est pourquoi, je pense, les réponses à cette question seraient toujours utiles.
emacs -Lapproche pour charger une version locale d'un package que j'ai également installé globalement à l'aide de Cask. Une chose qui m'a dérouté était que l'exécution<package>-versionrenvoie toujours la version installée globalement, même lorsque j'exécutais réellement la version modifiée locale. Il s'avère que c'est parce que<package>-versionpour ce package obtient la versionpackages.el.