git - 点文件存储库 : Switching from per-package Git submodules to ELPA while maintaining portability

标签 git emacs git-submodules elpa

我一直在我的 dotfiles repository 中使用 Git 子模块跟踪我使用的每个 Emacs 包。不过,由于 Emacs 24 内置了包管理器,我想切换到更官方且更易于使用的方法。

我的切换问题:使用我当前的 Git 子模块方法,dotfiles 存储库的任何克隆都保证包含所有引用的附加组件。 此包管理器中是否有内置功能允许包同步,以便 Git 存储库的任何 pull 都将包含必要的包(或者使用单个命令即可安装它们)?

如果没有像这样的内置功能,是否有一个“post-package-install” Hook ,我可以使用它来维护基于文本的包列表(稍后可以使用在列表中安装包的自定义命令读取) )?本质上,我想将我的包/包列表置于版本控制之下,以便它可以在计算机之间移植。

最佳答案

我按照kindahero的建议尝试了el-get,但这对我来说效果不太好..它没有正确加载 - 要么是代码中的一些错误,要么是我的缺乏Emacs Lisp 技能(更有可能是后者)。

我偶然发现了 Emacs Prelude项目,并在浏览源代码时发现了一段非常简单的代码片段:

(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)

(when (not package-archive-contents)
  (package-refresh-contents))

(defvar prelude-packages
  '(auctex clojure-mode coffee-mode deft gist haml-mode
                 haskell-mode magit markdown-mode paredit projectile
                 sass-mode scss-mode yaml-mode yari yasnippet)
  "A list of packages to ensure are installed at launch.")

(dolist (p prelude-packages)
  (when (not (package-installed-p p))
    (package-install p)))

我无耻地为我的 own purposes 偷了这个,而且效果一直很好。我通过切换到包管理器(使用 Marmalade 存储库)删除了几乎所有子模块。

关于git - 点文件存储库 : Switching from per-package Git submodules to ELPA while maintaining portability,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7302771/

相关文章:

git - 如果 '/' 是存储库的根目录,为什么 git 会中断?

git - 是否有可以在我自己的服务器上运行的 PHP Github 克隆?

Git - 将提交从一个分支移动到另一个

javascript - emacs org-babel 中没有用于 javascript 的 org-babel-execute 函数

emacs - 使 emacs gui 仅使用终端颜色

git - 从存储库中删除所有 Git 缓存的子模块

git - 无法在 Github 上为 pip install git+ssh 指定 key 文件

当该子模块没有该分支时,Git 子模块会忽略分支 checkout 时的错误

git - 如何将子模块粘贴到修复标签上?

typescript - Emacs LSP 模式 - 是否可以避免单击鼠标来完成建议的操作?