Ich möchte ein Paket ändern, testen und anschließend hoffentlich eine Pull-Anfrage stellen. Wie mache ich das sicher und effizient? Die Frage könnte sich zu weit gefasst anfühlen, ich werde die Antwort akzeptieren, die die folgenden Themen abdeckt:
Ich würde erwarten, einen separaten Zweig eines Pakets zu installieren und in der Lage zu sein, nach Belieben zwischen diesem und dem stabilen Zweig zu wechseln, wobei die Neukompilierung automatisch durchgeführt wird, wenn dies erforderlich ist, aber
package.el
dies scheint keine einfache Möglichkeit zu bieten. Diese Antwort auf emacs-SE informiert uns darüber, dass "Wenn mehrere Kopien eines Pakets installiert sind, wird die erste geladen", sodass man sich zwar manuell damit herumschlagen kannload-path
, sich aber nicht robust anfühlt. Was ist die Standardmethode zum Auswählen einer bestimmten Paketversion unter den installierten?Selbst wenn ich es schaffe, Emacs mehrere Zweige auszusetzen, muss ich bei signifikanten Änderungen sicherstellen, dass der nicht gepatchte Zweig "entladen" und seine Nebenwirkungen isoliert sind. Wird
unload-feature
dies richtig gehandhabt oder weist es möglicherweise Besonderheiten auf, die jeder Tester von Paketen mit mehreren Versionen kennen sollte?Wie installiere und teste ich die lokale Version? Die Antwort scheint davon abhängig zu sein, ob das Paket einfach (= eine Datei) oder vielseitig ist. EmacsWiki sagt über Multifile-Pakete: " MELPA erstellt Pakete für Sie ". Ich bezweifle, dass ich jedes Mal mit MELPA sprechen muss (oder sollte), wenn ich ein
defun
Formular in einem Paket mit mehreren Dateien ändere , aber die Frage bleibt. Zumindest muss ich Package Manager über die lokale Version informieren, und wenn ja, wie mache ich das?Welche Namen sollte ich lokalen Versionen von Paketen zuweisen? Angenommen, ich möchte gleichzeitig an mehreren Features oder Bugs arbeiten, was bedeutet, dass mehrere Zweige vorhanden sind. Emacs erlaubt es nicht, Versionen in einer beschreibenden Weise zu benennen (in Anlehnung an
20170117.666-somebugorfeature
). Ich schätze, ich könnte das Paket selbst umbenennen, ein Suffix pro Zweig, aber wie beim manuellen Herumspielenload-path
in Q1 ist dies ein hässlicher Hack. Ich werde es also nicht mit etwas versuchen, das ich vorab senden möchte, es sei denn, es ist eine allgemein akzeptierte Praxis .
Die Fragen sind wahrscheinlich naiv, da ich nie einen Patch geschrieben habe, noch einen mit git oder einem ähnlichen vcs angewendet habe. Für viele Emacs-Benutzer ist das Patchen eines Emacs-Pakets jedoch möglicherweise das erste (oder vielleicht das einzige) Unternehmen, das sich mit sozialer Programmierung befasst. Aus diesem Grund sind Antworten auf diese Frage meines Erachtens immer noch wertvoll.
emacs -L
Ansatz, um eine lokale Version eines Pakets zu laden, das ich auch mit Cask global installiert habe. Eine Sache, die mich abschreckte, war, dass beim Ausführen<package>-version
immer die global installierte Version zurückgegeben wird, auch wenn ich tatsächlich die lokal geänderte Version ausgeführt habe. Es stellte sich heraus, dass dies daran lag, dass das<package>-version
für dieses Paket die Version von erhältpackages.el
.