Chcę zmienić pakiet, przetestować go i mam nadzieję, że prześlę później żądanie ściągnięcia. Jak to zrobić w bezpieczny i wydajny sposób? Pytanie może wydawać się zbyt ogólne, zaakceptuję odpowiedź obejmującą następujące kwestie:
Spodziewałbym się zainstalować oddzielną gałąź pakietu i być w stanie przełączać się między nią a stabilną gałęzią według kaprysu, z rekompilacją przeprowadzaną automatycznie, gdy jest to konieczne, ale
package.el
nie wydaje się, aby oferować prosty sposób na zrobienie tego. Ta odpowiedź na emacs-SE informuje nas, że „Jeśli zainstalowanych jest wiele kopii pakietu, pierwsza zostanie załadowana”, więc myślę, że można ręcznie zepsuć,load-path
ale to nie jest solidne. Jaki jest standardowy sposób wyboru konkretnej wersji pakietu spośród zainstalowanych?Nawet jeśli uda mi się ujawnić Emacsowi kilka gałęzi, w przypadku znacznych poprawek muszę upewnić się, że niezaładowana gałąź jest „rozładowana”, a jej skutki uboczne odizolowane. Czy radzi
unload-feature
sobie z tym poprawnie, a może ma osobliwości, o których powinien wiedzieć każdy tester pakietów z wieloma wersjami?Jak zainstalować i przetestować wersję lokalną? Odpowiedź wydaje się zależeć od tego, czy pakiet jest prosty (= jeden plik), czy wielowątkowy. EmacsWiki mówi o pakietach z wieloma plikami : „ MELPA tworzy pakiety dla Ciebie ”. Wątpię, czy muszę (lub powinienem) rozmawiać z MELPA za każdym razem, gdy zmieniam
defun
formularz w pakiecie z wieloma plikami, ale pozostaje pytanie. Przynajmniej muszę poinformować menedżera pakietów o wersji lokalnej, a jeśli tak, to jak to zrobić?Jakie nazwy powinienem przypisać do lokalnych wersji pakietów? Załóżmy, że chcę pracować jednocześnie nad wieloma funkcjami lub błędami, co oznacza posiadanie kilku gałęzi. Emacs nie pozwoli na nazewnictwo wersji w sposób opisowy (zgodnie z
20170117.666-somebugorfeature
). Chyba mógłbym zmienić nazwę samego pakietu, przyrostek na gałąź, ale znowu, podobnie jak ręczne mieszanieload-path
w Q1, jest to brzydkie włamanie, więc nie spróbuję tego z czymś, co zamierzam wysłać w górę, chyba że jest to powszechnie akceptowana praktyka .
Pytania prawdopodobnie są naiwne, ponieważ nigdy nie napisałem łatki ani nie zastosowałem jej z gitem ani podobnym vcs. Jednak dla wielu użytkowników Emacsa łatanie pakietu Emacsa może być ich pierwszym (a może jedynym) przedsięwzięciem związanym z programowaniem społecznościowym i dlatego, moim zdaniem, odpowiedzi na to pytanie byłyby nadal cenne.
emacs -L
podejścia, aby załadować lokalną wersję pakietu, który również zainstalowałem globalnie za pomocą Cask. Jedną rzeczą, która mnie odrzuciła, było to, że uruchamianie<package>-version
zawsze zwraca wersję zainstalowaną globalnie, nawet gdy faktycznie uruchomiłem lokalną zmodyfikowaną wersję. Okazuje się, że było tak, ponieważ<package>-version
dla tego pakietu pobierana jest wersjapackages.el
.