Vorrei modificare un pacchetto, testarlo e spero di inviare successivamente una richiesta pull. Come lo faccio in modo sicuro ed efficiente? La domanda potrebbe sembrare troppo ampia, accetterò la risposta che copre i seguenti problemi:
Mi aspetterei di installare un ramo separato di un pacchetto e di essere in grado di passare da un ramo all'altro per un capriccio, con la ricompilazione eseguita automaticamente quando è necessario, ma
package.el
non sembra offrire un modo semplice per farlo. Questa risposta su emacs-SE ci informa che "Se sono installate più copie di un pacchetto, allora il primo verrà caricato", quindi immagino che si possa fare un casino manualmenteload-path
ma questo non sembra affidabile. Qual è il modo standard di selezionare una versione specifica del pacchetto tra quelli installati?Anche se riesco a esporre diversi rami a Emacs, per modifiche significative devo assicurarmi che il ramo senza patch sia "scaricato" e che i suoi effetti collaterali siano isolati. Gestisce
unload-feature
questo correttamente o forse ha delle idiosincrasie che ogni tester di pacchetti multi-versione dovrebbe conoscere?Come installo e collaudo la versione locale? La risposta sembra dipendere dal fatto che il pacchetto sia semplice (= un file) o multiplo. EmacsWiki dice dei pacchetti multi-file : " MELPA crea pacchetti per te ". Dubito di dover (o dovrei) parlare con MELPA ogni volta che cambio un
defun
modulo in un pacchetto multiplo, ma la domanda rimane. Almeno devo dire al gestore pacchetti della versione locale e, in tal caso, come posso farlo?Quali nomi devo assegnare alle versioni locali dei pacchetti? Supponiamo che io voglia lavorare su più funzionalità o bug contemporaneamente, il che significa avere diversi rami. Emacs non consentirà di nominare le versioni in modo descrittivo (lungo le linee di
20170117.666-somebugorfeature
). Immagino che potrei rinominare il pacchetto stesso, un suffisso per ramo, ma ancora una volta, come fare casiniload-path
nel Q1, questo è un brutto hack, quindi non lo proverò con qualcosa che intendo inviare a monte a meno che non sia una pratica ampiamente accettata .
Le domande probabilmente sono ingenue, dal momento che non ho mai scritto una patch né applicato uno con git o un VCC simile. Tuttavia, per molti utenti di Emacs, l'applicazione di patch a un pacchetto Emacs potrebbe essere il loro primo (o forse l'unico) sforzo di programmazione sociale, motivo per cui, credo, le risposte a questa domanda sarebbero comunque utili.
emacs -L
approccio per caricare una versione locale di un pacchetto che ho anche installato a livello globale usando Cask. Una cosa che mi ha sconcertato è che l'esecuzione<package>-version
restituisce sempre la versione installata a livello globale, anche quando stavo effettivamente eseguendo la versione modificata locale. Si scopre che ciò è dovuto al fatto che<package>-version
per questo pacchetto ottiene la versione dapackages.el
.