Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
github上托管的已安装包的子模块的emacs_Emacs_Github - Fatal编程技术网

github上托管的已安装包的子模块的emacs

github上托管的已安装包的子模块的emacs,emacs,github,Emacs,Github,我已经在几台计算机上安装了emacs,为了在它们之间同步配置,我设置了一个github repo来存储我的emacs配置,即我的文件夹~/.emacs.d 现在,我开始在一台计算机上使用emacs,我安装了某些软件包,比如说,package_foo,使用MELPA。现在在my.emacs.d/elpa foder中有一个名为package_foo的文件夹。我还发现包_foo实际上托管在github上。如果我可以将其子模块化,那就太好了,因为我的.emacs.d也在github上 因此,如果由em

我已经在几台计算机上安装了emacs,为了在它们之间同步配置,我设置了一个github repo来存储我的emacs配置,即我的文件夹~/.emacs.d

现在,我开始在一台计算机上使用emacs,我安装了某些软件包,比如说,package_foo,使用MELPA。现在在my.emacs.d/elpa foder中有一个名为package_foo的文件夹。我还发现包_foo实际上托管在github上。如果我可以将其子模块化,那就太好了,因为我的.emacs.d也在github上


因此,如果由emacs package manager安装的package_foo位于github上,我如何自动将其子模块化,而不是将其复制到我的.emacs.d/elpa文件夹中?是否有一个emacs插件知道包_foo的来源,并将其子模块安装(如果可能)而不是提取所有文件?这不仅可以节省github上的空间,还可以在同步时节省带宽。

不要将子模块用于包。不要将包提交到存储库

相反,将Emacs配置为自动为您安装缺少的软件包。为此,您可以使用某些特殊功能:

(defun package-required (package) (unless (package-installed-p package) (package-install package))

(package-required 'magit)

或者,您可以使用在
纸箱
文件中声明包来管理包。然后您可以使用shell命令
carton install
安装丢失的软件包,并使用
carton update
更新所有软件包。

我认为没有任何支持github的elpa插件。我的建议?不要使用elpa。我更喜欢使用git子模块。请参阅,以获取一个很好的示例。另一个选择是查看el get:@Rob ELPA为您提供了一个正确的
加载路径和免费的自动加载。对于Git子模块,您必须自己完成这项工作。如果您不打算将包提交到自己的存储库中,您可能希望指定要使用的每个包的确切版本,而不是要求提供最新版本并假设它可以正常工作。如果您确实提交了您的包,那么在有问题的更新之后回滚是绝对微不足道的。我个人建议这样做,但YMMV@lunaryorn您的函数包required给出错误:“if:Symbol作为变量的值为void:package”@shelper我很难相信这一点。你复制的代码片段正确吗?