遇到一个问题:
borg-clone 没法克隆 undo-tree
这个包,大家有遇到过吗?
Cloning into 'lib/undo-tree'...
ssh_askpass: exec(/usr/lib/ssh/ssh-askpass): No such file or directory
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
为什么其他的包都没问题,就这个包要走 ssh-askpass,undo-tree 不是也在github 仓库上吗?
我不太清楚,我不用undo-tree。。我用的是undohist+vundo
谢谢,好像快了一些。我看了下CPU,慢的锅应该是360,magit-status执行时360的进程也在执行。
全部迁移到 Borg 了,启动速度还是很快的,1.2s 左右,和 package.el 差不多。
开始不熟悉, borg-clone
再 borg-assimilate
, 再 borg-build
。
其实,先 epkg-describe-package
查看包的依赖关系,然后只要 borg-assimilate
就可以安装包了,它会自动 clone 并 build。装好再加配置并commit。
borg-clone 是给只想克隆,不想编译用的。 borg-build
是给 borg-assimilate
出错,想重新编译用的。
不需要的包用 borg-remove
移除。
总的来说,就是自己管理依赖,手动安装。
剩下的问题:
- 由于缺少 ssh-askpass 没发安装 undo-tree 和 git-timemachine (这个不能缺)
- 在 Mac 上 Magit commit 非常慢,比 Windows 还慢了,有待解决。
反而是 Windows 下是正常(跟以前一样慢 )
3 个赞
这个问题已经解决,原因是我从来没用 ssh 下载过 gitlab 仓库,所以 ssh 的 ~/.ssh/known_hosts
没有加 gitlab.com。 只要在终端里下载一次 gitlab 的项目就 OK了。然后 Borg 就可以正常 Clone
我是直接用https,没用ssh。配置下 borg-rewrite-urls-alist:
(setq borg-rewrite-urls-alist
'(("[email protected]:" . "https://github.com/")
("[email protected]:" . "https://gitlab.com/")))
以前我的Git 都是用 https,每次都要提示我输入密码。加上前段时间(好像是半年前)Github 提示不允许用 https+普通密码 给自己仓库推送commit,于是就弄了 ssh。
用 HTTPS 是怎么做到不用手输密码的? 用GPG 吗?
在github的 1. Settings → Developer settings,创建一个 Personal access tokens。然后push url的格式:https://user:[email protected]/xxx.git
国内的gitee也是可以创建这种https token的,gitlab就没试过了。
多谢,原来 Github 是要用户用这个 Personal access tokens, 之前只用过在 CI 上用。
再请教一个问题,对基于 Borg 的 .emacs.d ,A 机器和B 机器都已经同步了 Github 上的仓库,当 A 机器添加了更多的包并推送到 Github 后,B 机器拉取更新。接下正确的方式应该是执行什么命令让本B机器的本地子模块进行更新?
我试过在B机器上执行 make bootstrap
和 make all
,以及 git submodule update --init --recursive
都不对。
在 B 机器上全新安装倒是没问题的,但是那样太慢了。
git submodule update --init lib/reponame
我记得是这样,在magit中也可以操作的,不过我的实在太慢。这个命令拉到包以后,运行一次 borg-build
多谢 ,命令行操作其实也挺方便的,不一定都用 magit
这个和手动git submodule add相比有什么优势吗?
borg有点像半自动。需要自己考虑的:
- 包的依赖
- 具体配置
其他像生成 autoloads,byte-compile,make info,添加load-path都不用考虑。borg-assimilate下载后编译可以发现少的依赖。还可以用submodule.DRONE.variable作好些微调。
比如最近看到一个包 org-appear好玩,直接 M-x borg-assimilate
,它就自动下载、编译,也没报错。看看它的readme,只有 (add-hook 'org-mode-hook 'org-appear-mode)
一行必须,就直接加在原来的 org配置下。就这么简单,好些都不用考虑。删除包只要 borg-remove
。
需要微调的:
- 包的目录不符合borg约定的:在目录、在lisp目录下、在elisp目录下。如
all-the-icons
,就在 .gitmodules文件中用 load-path调整:
[submodule "all-the-icons"]
path = lib/all-the-icons
url = https://github.com/domtronn/all-the-icons.el.git
load-path = .
load-path = data
- 不想编译的。如没用 helm,则在 org-ref中:
[submodule "org-ref"]
path = lib/org-ref
url = https://github.com/jkitchin/org-ref.git
no-byte-compile = org-ref-helm-bibtex.el
no-byte-compile = org-ref-helm-cite.el
no-byte-compile = org-ref-helm.el
- 要使用自己的fork,直接在 .gitmodules下修改url。
暂时遇到的主要是这几种。我向作者提的像doom一样生成一个大的 autoloads.el,这样包装好后就可以不依赖 git, 对于windows用户也可以提高点速度。对于我要离线同步配置来说,真是太方便了。不用其他工具diff了。
1 个赞
请问下像 flyspell-correct 这个包,提供了很多功能,但我只用到默认的那个,根本不想安装他所有的依赖。应该怎么处理才能使得 ivy 和 helm 不参与编译并加入autoload?
目前我是强行编译,虽然有报错,但能正常使用。
这个包的依赖如下:
flyspell-correct
[-] Dependencies:
|-[+] avy-menu github avy-menu
|-[+] buttercup github buttercup
|-[+] emacs builtin subr-x
|-[+] flyspell builtin flyspell
|-[+] helm github helm
|-[+] ido builtin ido
|-[+] ivy github ivy
`-[+] popup github popup
请教一下 Borg 的 .gitsubmodule 中能够对不同平台设定不同的编译参数吗?
比如我要安装 mu4e 的时候,只想在 macOS 上定义特殊的编译步骤,在 Linux 平台用不同的参数。
[submodule "mu4e"]
path = lib/mu4e
url = [email protected]:djcb/mu.git
build-step = test -e ./configure || autoreconf -i
build-step = ./configure
build-step = make -C mu4e > /dev/null
build-step = borg-update-autoloads
load-path = mu4e
执行 make all
进行对 .emacs.d
进行 native compile 时, PC-Doctor Module 吃了 50G 内存,有人遇到这个问题吗?是否是正常情况?
在 /.emacs.d/etc/borg/config.el
中加入了下面的设置:
(when (native-comp-available-p)
(setq borg-compile-function #'native-compile))