5

我目前使用 subversion 来跟踪我的 Emacs 配置更改并将我的 '.emacs.d' 目录同步到不同的平台。

许多包,如 Ido、Muse 或 Org-mode 是 Emacs 发行版的一部分,这些发行版随 Debian 或 Carbon Emacs (osx) 一起提供。但是我也在使用的其他软件包不是这些发行版的一部分,所以我必须手动将它们添加到我的个人 subversion 存储库中。

优点是我现在可以在任何我想工作的地方检查我的整个 '.emacs.d' 配置。缺点是我必须跟踪这些包的更新,每次有新的更新可用时,我都必须手动更新我自己的存储库。

有没有更好的方法将我自己的配置和包与“社区”的配置和包集成?我意识到很多人出于这个原因使用 github.com。

我应该更好地使用 git 而不是 subversion 来与社区同步和共享我的 Emacs 配置吗?这是否意味着我应该更好地切换到 github.com 而不是使用我自己的 subversion 服务器来更接近其他 Emacs 用户的交换和分发?

4

3 回答 3

5

每次您必须处理一些“分发”问题时,最好考虑使用分布式版本控制系统 (DVCS)。

例如,使用 Git,您可以将包组织为主 emacs 配置项目中的子模块,它本身在您自己的项目中被引用为子模块。

这样,您只需要

 git submodule update --recursive

偶尔确保获得中央配置项目引用的最新包。
注意:这些子模块的递归初始化有点棘手:请参阅这个SO question 了解更多信息

于 2009-12-06T11:45:28.363 回答
2

我个人使用(并推荐)git 来存储 emacs 文件。查看http://github.com/technomancy/emacs-starter-kit是个好主意。它是许多人使用的大量 emacs 文件(超过 600 人观看 repo)。由于它们会定期更新,因此您会获得新版本。elpa也值得一看,它旨在简化 emacs 的包管理。

您可能还想看看我打算如何将其他包更改保持在一起。

如何合并两个独立的 Git 存储库?

于 2009-12-07T15:51:22.403 回答
2

虽然我基本上同意 VonC,并且很感激他让我注意到了 git 子模块,但我不会将它们推荐给熟悉 VCS 但会过渡到 DVCS 的人。我现在非常喜欢使用 git 并衷心推荐它,但要跨过那座桥需要做很多工作。

至于解决社区软件的替代方法,我也衷心推荐ELPA用于 Emacs 不提供的软件包。必须手动应用更新,但至少 ELPA 提供了一种机制让您知道存在更新。它还为添加非 ELPA 托管的社区提供的包提供了一个很好的脚手架。

Lastly, you might want to elaborate on how you organize your packages based on platform. I try to keep all my platform (and per-machine) customization in embedded Emacs lisp such that I share a single set of source controlled support (*.el) files on all the major platforms I work with: Linux (Fedora and Ubuntu), Mac OS X and Windows (native and cygwin).

于 2009-12-08T09:13:41.730 回答