比如说,今天我刚刚升级了 Ivy
ivy-20180705.807 -> ivy-20180712.1301
并且清空了回收站。然后发现出了一点小问题,如何快速找回老的包 ivy-20180705.807
呢?
相关问题
问题是要如何去 github 上找到 ivy-20180705.807
对应的 commit id 呢?
PS ivy-20180705.807
来自 package-desc-full-name
比如说,今天我刚刚升级了 Ivy
ivy-20180705.807 -> ivy-20180712.1301
并且清空了回收站。然后发现出了一点小问题,如何快速找回老的包 ivy-20180705.807
呢?
相关问题
问题是要如何去 github 上找到 ivy-20180705.807
对应的 commit id 呢?
PS ivy-20180705.807
来自 package-desc-full-name
去读了一波源码,应该可以这么解决
(package-install
(package-desc-create :name "ivy"
:version '(20180705 807)
:dir 'builtin
:kind 'tar
:archive "melpa"))
有的包需要 name 'symbol + kind 'single
如
(package-install
(package-desc-create :name 'projectile
:version '(20180709 1217)
:dir 'builtin
:kind 'single
:archive "melpa"
))
package.el
没有专门的支持,而且官方 Melpa 也不可能做到,因为 Melpa 甚至都不保存旧版本:
# 当前最新版本
~ $ curl -sI https://melpa.org/packages/ivy-20180712.1301.tar | head -1
HTTP/1.1 200 OK
# 旧版本
~ $ curl -sI https://melpa.org/packages/ivy-20180705.807.tar | head -1
HTTP/1.1 404 Not Found
尽管 Melpa 的 Emacs China 镜像会保存旧版本,其它的 ELPA,像 GNU ELPA 和 Org ELPA 也会保存旧版本。
原来 Melpa 上有显示 Commit 的,不过最近出了问题。
另外,根据时间点应该也能大致推算出是哪个 Commit,因为这个时间点好像是从Commit 的时间点来的。
是的,还是镜像大法好👍