パッケージを変更してテストし、その後プルリクエストを送信したいです。安全で効率的な方法でそれを行うにはどうすればよいですか?質問は広すぎると感じるかもしれませんが、私は次の問題をカバーする答えを受け入れます。
パッケージの別のブランチをインストールし、気まぐれに安定したブランチを切り替えることができると期待しています。必要なときに自動的に再コンパイルが実行されますが、それ
package.el
を行う簡単な方法は提供されていないようです。emacs-SEに関するこの回答は、「パッケージの複数のコピーがインストールされている場合、最初のコピーがロードされる」ことを教えてくれるので、手動で混乱させることができると思いますload-path
が、これは堅牢ではありません。インストールされているパッケージの中から特定のバージョンのパッケージを選択する標準的な方法は何ですか?いくつかのブランチをEmacsに公開できたとしても、大幅な調整のために、パッチを当てていないブランチを「アンロード」し、その副作用を分離する必要があります。
unload-feature
それはマルチバージョンのパッケージのすべてのテスターが知っておくべきことの特異性を持って適切にまたは多分これを処理しますか?ローカルバージョンをインストールしてテストするにはどうすればよいですか?答えは、パッケージがシンプル(= 1ファイル)かマルチファイルかによって異なります。EmacsWikiは、マルチファイルパッケージについて次のように述べています。「MELPAはパッケージをビルドします」。
defun
マルチファイルパッケージのフォームを変更するたびにMELPAと話す必要がある(またはすべき)とは思いませんが、疑問は残ります。少なくとも、ローカルバージョンについてパッケージマネージャーに伝える必要があります。その場合、どのようにすればよいですか?パッケージのローカルバージョンにどのような名前を割り当てる必要がありますか?複数の機能やバグを同時に処理したい場合、つまり複数のブランチを作成したいとします。Emacsでは、記述的な方法でバージョンに名前を付けることはできません(の行に沿って
20170117.666-somebugorfeature
)。パッケージごとにサフィックスをブランチごとに名前変更できると思いますが、load-path
Q1 で手動で混乱させるのと同様に、これはいハックなので、広く受け入れられている慣行でない限り、アップストリームに送信するものでそれを試しません。
gitや同様のvcを適用したパッチを作成したことがないため、質問はおそらく単純です。しかし、多くのEmacsユーザーにとって、Emacsパッケージへのパッチ適用は彼らにとって初めての(あるいはおそらく唯一の)ソーシャルプログラミングの試みかもしれません。そのため、この質問に対する答えはまだ価値があると思います。
emacs -L
Caskを使用してグローバルにインストールしたローカルバージョンのパッケージを読み込むアプローチを使用しています。<package>-version
実際にローカルに修正されたバージョンを実行していても、実行すると常にグローバルにインストールされたバージョンが返されるということでした。これは<package>-version
、このパッケージのがからバージョンを取得するためでしたpackages.el
。