Я хочу изменить пакет, протестировать его и, надеюсь, впоследствии отправить запрос на извлечение. Как мне сделать это безопасным и эффективным способом? Вопрос может показаться слишком широким, я приму ответ, который охватывает следующие вопросы:
Я хотел бы установить отдельную ветвь пакета и иметь возможность переключаться между ним и стабильной веткой по прихоти, при этом перекомпиляция выполняется автоматически, когда это необходимо, но
package.el
, похоже, не предлагает прямого способа сделать это. Этот ответ на emacs-SE сообщает нам, что «если установлено несколько копий пакета, то будет загружена первая», так что я думаю, что можно вручную связываться,load-path
но это не кажется надежным. Каков стандартный способ выбора конкретной версии пакета среди установленных?Даже если мне удастся открыть несколько веток в Emacs, для значительных изменений мне нужно убедиться, что непатченная ветвь «выгружена» и ее побочные эффекты изолированы.
unload-feature
Правильно ли это обрабатывается, или, может быть, у него есть свои особенности, о которых должен знать каждый тестер версий с несколькими версиями?Как мне установить и протестировать локальную версию? Кажется, что ответ зависит от того, является ли пакет простым (= один файл) или многофайловым. EmacsWiki говорит о многофайловых пакетах: « MELPA создает пакеты для вас ». Я сомневаюсь, что мне приходится (или должен) разговаривать с MELPA каждый раз, когда я меняю
defun
форму в многофайловом пакете, но вопрос остается. По крайней мере, мне нужно сообщить менеджеру пакетов о локальной версии, и если да, то как мне это сделать?Какие имена следует назначать локальным версиям пакетов? Предположим, я хочу работать над несколькими функциями или ошибками одновременно, что означает наличие нескольких веток. Emacs не позволит называть версии в описательной форме (по аналогии с
20170117.666-somebugorfeature
). Я думаю, я мог бы переименовать сам пакет, суффикс на ветку, но опять же, как и ручная работаload-path
в Q1, это отвратительный взлом, поэтому я не буду пробовать его с чем-то, что намереваюсь отправить в апстрим, если это не является общепринятой практикой ,
Вопросы, вероятно, наивны, так как я никогда не писал патч и не применял патч с git или подобным vcs. Однако для многих пользователей Emacs исправление пакета Emacs может стать их первым (или, возможно, единственным) приложением для социального программирования, поэтому я считаю, что ответы на этот вопрос будут по-прежнему полезны.
emacs -L
подход для загрузки локальной версии пакета, который я также установил глобально, используя Cask. Одна вещь, которая меня оттолкнула, это то, что запуск<package>-version
всегда возвращает глобально установленную версию, даже когда я фактически запускаю локальную модифицированную версию. Оказывается, это потому,<package>-version
что версия для этого пакета получает версиюpackages.el
.