Bir paketi değiştirmek, test etmek ve umarım daha sonra bir çekme isteği göndermek istiyorum. Nasıl güvenli ve verimli bir şekilde yapabilirim? Soru çok geniş hissedebilir, aşağıdaki sorunları kapsayan cevabı kabul edeceğim:
Bir paketin ayrı bir dalını kurmayı ve gerektiğinde otomatik olarak yapılan yeniden derleme ile bir kapris üzerinde istikrarlı dal arasında geçiş yapabilmeyi beklerdim, ancak
package.el
bunu yapmak için basit bir yol sunmuyor gibi görünüyor. Emacs-SE'deki bu cevap , bize “Bir paketin birden fazla kopyası yüklüyse, o zaman ilk paket yüklenir” diye bildirir, bu yüzden birinin elle karışabileceğiniload-path
ama bu sağlam hissetmeyeceğini tahmin ediyorum . Kurulu olanlar arasından paketin belirli bir sürümünü seçmenin standart yolu nedir?Birkaç şubeyi Emacs'a göstermeyi başarabilsem bile, önemli değişiklikler için, işlenmemiş dalın “boşaltıldığından” ve yan etkilerinin izole edildiğinden emin olmalıyım.
unload-feature
Bunu düzgün bir şekilde ele alıyor mu, yoksa çok sürümlü paketlerin her test edicisinin bilmesi gereken kendine özgü ifadeleri vardır?Yerel sürümü nasıl yükler ve test ederim? Yanıt, paketin basit (= bir dosya) veya çok dosyalı olmasına bağlı gibi görünüyor. EmacsWiki çok dosyalı paketler hakkında şunları söylüyor: “ MELPA sizin için paketler oluşturur ”. Çok dosyalı
defun
bir paketteki bir formu her değiştirdiğimde MELPA ile konuşmam gerektiğinden (veya yapmam gerektiğinden) şüpheliyim ama soru hala devam ediyor. En azından paket yöneticisine yerel sürümden bahsetmem gerekiyor ve eğer öyleyse, bunu nasıl yapabilirim?Paketlerin yerel sürümlerine hangi adları atamalıyım? Aynı anda birden fazla özellik veya hata üzerinde çalışmak istediğimi varsayalım, bu da birkaç şubeye sahip olmak anlamına geliyor. Emacs, sürümleri açıklayıcı bir şekilde (satırları boyunca
20170117.666-somebugorfeature
) adlandırmaya izin vermez . Sanırım paketin kendisini, şube başına bir son eki yeniden adlandırabilirim, ancak yine,load-path
Q1'de elle karışıklık yapmak gibi , bu çirkin bir hack, bu yüzden yaygın olarak kabul edilen bir uygulama olmadığı sürece yukarı doğru göndermek istediğim bir şeyle denemeyeceğim .
Soruları muhtemelen naif, çünkü hiç git ya da benzer vcs ile bir yama yazmadım. Ancak, çok sayıda Emacs kullanıcısı için, bir Emacs paketini yamalamak ilk sosyal programlama çabası olabilir (ya da belki de tek), bu yüzden bu sorunun cevaplarının hala değerli olacağına inanıyorum.
emacs -L
Cask kullanarak global olarak yüklediğim bir paketin yerel bir sürümünü yüklemek için yaklaşımı kullanıyorum. Beni atmış olan bir şey<package>-version
, aslında yerel olarak değiştirilmiş sürümü çalıştırırken bile , çalışmanın her zaman global olarak yüklenmiş sürümü döndürmesiydi. Bunun nedeni,<package>-version
bu paket için sürümü almak olduğu için oldupackages.el
.