我不确定是否应该在.emacs.d
:
[lucas@lucas-ThinkPad-W520]/home/lucas/.emacs.d$ file elpa/archives/marmalade/archive-con
tents
elpa/archives/marmalade/archive-contents: HTML document, UTF-8 Unicode text, with very lo
ng lines, with no line terminators
[lucas@lucas-ThinkPad-W520]/home/lucas/.emacs.d$ file elpa/archives/gnu/archive-contents
elpa/archives/gnu/archive-contents: ASCII text
[lucas@lucas-ThinkPad-W520]/home/lucas/.emacs.d$
如上所示,marmalade/archive-contents
是HTML文档,而gnu/archive-contents
是ASCII文本。这些安全包含在我的版本控制中还是应该从索引中删除?
例如,我在不同的平台上使用emacs,比如Ubuntu Linux和Windows 7,我希望我的emacs环境保持一致。它到目前为止工作,但我想避免未来的问题。我忽略了*.elc
这样的文件,但我不知道版本控制下的archive-contents
是否有助于或阻碍我的跨平台emacs环境。
我查看了其他.emacs.d/
个存储库,例如this one,并检查了他们的.gitignore
文件,但我也不知道他们是否也正常运行。有关如何管理.emacs.d/
版本控制以进行跨平台开发的任何建议或资源都会很棒。
这是我当前的.gitignore
:
*~
*.elc
tramp
更新
这似乎是一个不确定的主题,但似乎绝大多数版本都没有版本控制他们的整个elpa/
文件夹,即使它可能会受到初始加载时间(克隆后立即)的影响。我想我会遵循这个建议,并且我愿意接受它,而不是花更多的时间来管理预编译存储库的额外问题。
答案 0 :(得分:4)
我根本不提交.emacs.d/elpa
。我的init.el
会在启动时自动重新安装丢失的软件包。我没有任何问题,即使我只使用MELPA的不稳定包。
答案 1 :(得分:3)
我不认为包括archive-contents
会导致任何问题。我没有充分利用package.el,但我在我的回购中有这个文件,并没有发现任何问题。
字节编译的.elc
文件是可移植的。我建议你做将它们包含在你的存储库中,否则你在克隆你的repo时会冒险使用未编译的elisp,而Emacs会非常慢地运行你的配置。
请记住,如果没有.el
文件,如果它没有.elc
文件,那么任何默认的重新编译命令都不会编译,因此您无需决定是否强行编译一切(这不一定是安全的事情),或者手动挑选。两者都不是一个好的选择。
我做的例外是我自己编辑的elisp文件(init文件等),因为当你在多个地方编辑文件和合并时,更有可能导致问题。所以我做 .gitignore这些文件(并强制编译它们以进行新部署)。但是,我使用http://tarsius.github.com/auto-compile(高度推荐)自动确保这些(实际上所有).elc文件的编译版本始终是最新的,以便在合并修改后的版本时。 el文件,Emacs不会加载过时的.elc文件。
FWIW我的.gitignore看起来像这样(虽然有些名字是自定义的)。但是,当你遇到需要它时,它几乎就是添加东西的情况,所以我不建议你复制它。
*~
/auto-save-list/
/backup/
/bookmarks.bmk
/desktop/*
/eshell/*
/history
/server/
/tramp
/geben/
/erc/*
/image-dired/
/url
session.*
/my-lisp/*.elc
答案 2 :(得分:1)
这些文件由package.el
(更具体地,package-update-contents
函数)创建,并包含每个ELPA存储库的包索引。将它们检入VC可能会很烦人,因为它们经常更新,你必须处理合并,这是没有意义的,因为它们最终会被package.el
更新。