(let ((default-directory "/home/vision/"))
(magit-pull)
(magit-fetch "upstream")
(magit-merge "upstream/master")
(magit-push))
Я собираюсь:
Running git fetch upstream
Git is already running
Как я могу дождаться окончания выборки?
(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))
(И вы можете предложить патч, чтобы добавить необязательный аргумент флага, но это кажется сомнительной функцией для интерактивного инструмента...)
Похоже, этот вопрос связан с вашим предыдущим вопросом. Вы пытаетесь решить проблему использования git из emacs двумя способами:
Ваш первый подход явно не работал, и ваш второй подход кажется лучше. Однако magit не предназначен для использования в вашем коде. Функции могут измениться в любое время, так как magit интересует только интерфейс. Любое изменение, не нарушающее функциональность, будет считаться безопасным.
Было бы полезно, если бы вы объяснили, какова ваша конечная цель, чтобы вы могли получить лучший ответ. Вам может понадобиться простой псевдоним git, который вы можете вызвать из emacs.