I just saw a reference to Pallet on reddit. It’s a way of syncing your Emacs packages across several machines. For example, you might, like me, have several machines and want your ELPA configuration to look the same on all of them. The usual strategy of throwing everything in git or some other version control can cause merge conflicts and other problems. Pallet is supposed to handle the syncing in a more efficient way.
It looks pretty nice but judging from the comments it’s very new and no one commenting on reddit had any experience with it. Does anyone here have wisdom to share about it?
I just leave my entire .emacs.d/ inside dropbox, that includes elpa/.
You might think this would lead to conflicts, but it’s been surprinsingly efficient so far (not to mention 100% effortless). It syncs everything seamlessly over 3 different machines (running 3 different OS’s).
Pallet is a simple wrapper around Carton (https://github.com/rejeep/carton). Carton solves insane solutions for third party packaging such as submodules and dropbox, by storing a manifest file of all packages. What Pallet does is manage this file automatically. So if you install a package, Pallet will add that package to your Carton-file.
Pallet is only useful for your local Emacs installation, while Carton also makes it a lot easier for package developers to manage dependencies.
El-Get has full support for ELPA packages and knows how to sync your setup in more than one way already. Might as well use it.
Another approach is to precede your config code with a function call that installs the package if it doesn’t already exist. I stole this approach from Sacha Chua’s config file. (Here’s a Gist of just the package install function.)
This method doesn’t track version dependencies, but I haven’t found a need for that, personally.
Seconding Sacha Chua’s approach. Worked great out of the box when setting up on a new machine.