(let ((default-directory "/home/vision/"))
(magit-pull)
(magit-fetch "upstream")
(magit-merge "upstream/master")
(magit-push))
我越來越:如何運行magit同步
Running git fetch upstream
Git is already running
我如何可以等待取完嗎?
(let ((default-directory "/home/vision/"))
(magit-pull)
(magit-fetch "upstream")
(magit-merge "upstream/master")
(magit-push))
我越來越:如何運行magit同步
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"))
但是這真的推動它 - 例如,當抓取失敗會發生什麼?
BTW,還有一點,你可以做的是看看源是在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))
(你可以提出一個補丁添加一個可選的標誌參數,但是這似乎是一個互動的工具,一個不確定的特徵...)
這個問題似乎是與您的previous question相關。 你試圖用兩種方法來解決你使用Git從emacs的範圍內的問題:
你的第一種方法顯然不起作用,你的第二種方法似乎更好。但是,magit並不意味着從您的代碼中使用。由於magit只對前端感興趣,因此這些功能可以隨時更改。任何不會中斷功能的更改都將被視爲安全。
如果你解釋了你的最終目標是什麼,這樣你可以得到更好的答案將是有用的。 您需要的可能是一個簡單的git別名,您可以從emacs調用。
我想我必須在這裏使用一些沒有異步的東西,magit並非像@Eli Barzilay所說的那樣設計的。沒有概念性的最終目標,我只需要同步一些git存儲庫,也許添加一些額外的腳本,但它很簡單,直到我發現如何使用elisp改進它,例如購買添加配置文件。 – Cynede