(let ((default-directory "/home/vision/"))
(magit-pull)
(magit-fetch "upstream")
(magit-merge "upstream/master")
(magit-push))
我越来越:
Running git fetch upstream
Git is already running
如何等待获取完成?
Magit旨在作为 git 的交互式前端,因此magit-fetch
并非真正打算从您的代码中运行...magit-process
运行时,完成后清除。因此,您可以将它与等待直到发生这种情况的循环一起使用:
(progn
(magit-fetch "upstream")
(while magit-process (sleep-for 0.25))
(magit-fetch "upstream"))
但这确实在推动它——例如,当获取失败时会发生什么?
顺便说一句,您可以做的另一件事是查看源代码,在这种情况下它是一个单行函数magit-fetch
:
(apply 'magit-run-git-async "fetch" remote magit-custom-options)
并编写使用非异步版本的代码:
(progn
(apply 'magit-run-git "fetch" "upstream" magit-custom-options)
(apply 'magit-run-git "fetch" "upstream" magit-custom-options))
(并且您可以建议一个补丁来添加一个可选的标志参数,但这对于交互式工具来说似乎是一个不确定的功能......)
这个问题似乎与您之前的问题有关。您正在尝试通过两种方法解决在 emacs 中使用 git 的问题:
您的第一种方法显然不起作用,而您的第二种方法似乎更好。但是,magit 并不意味着在您的代码中使用。由于 magit 只对前端感兴趣,因此功能可能随时更改。任何不破坏功能的更改都将被视为安全的。
如果您解释了您的最终目标是什么,这将很有用,这样您就可以获得更好的答案。您需要的可能是一个可以从 emacs 调用的简单 git 别名。