2012-06-21 7 views
3
(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 

?

답변

6

Magit은 git의 대화식 프런트 엔드로 사용하기 때문에 magit-fetch과 같은 코드는 실제로 코드에서 실행되지 않습니다. 그러나 코드를 간략하게 살펴보면 magit-process이 표시됩니다. 실행 중에 프로세스를 보유하는 변수이며 완료되면 지워집니다. (가) 실패 가져올 때 발생하는, 예를 들면 -

(progn 
    (magit-fetch "upstream") 
    (while magit-process (sleep-for 0.25)) 
    (magit-fetch "upstream")) 

을하지만 그건 정말 밀어 : 당신은 그러므로 그렇게까지 대기 루프와 함께 사용할 수 있습니까?

(apply 'magit-run-git-async "fetch" remote magit-custom-options) 

및 쓰기 코드가 아닌 비동기 버전 사용 :

BTW, 당신이 할 수있는 또 다른 한가지는 magit-fetch 경우에 한 줄 기능이되는 소스에서 볼입니다

(progn 
    (apply 'magit-run-git "fetch" "upstream" magit-custom-options) 
    (apply 'magit-run-git "fetch" "upstream" magit-custom-options)) 

(그리고 당신은 옵션 플래그 인수를 추가하는 패치를 제안 할 수 있습니다,하지만 ... 대화 형 도구에 대한 불확실한 기능처럼 보인다)

0

이 질문은 것 같다 previous question과 관련 있습니다. 당신은 두 가지 방법으로 이맥스 내에서 자식을 사용하여 문제를 해결하기 위해 노력하고있다 :

  • 이맥스는 자식과 상호 작용하는 기존 라이브러리를 사용하여
  • 을 LISP에 선으로 떠들썩한 파티 스크립트 라인을 변환

첫 번째 접근 방식은 분명히 작동하지 않았으며 두 번째 접근 방식이 더 나은 것으로 보입니다. 그러나 magit는 코드에서 사용하지 않아야합니다. magit은 프론트 엔드에만 관심이 있으므로 언제든지 기능이 변경 될 수 있습니다. 기능을 손상시키지 않는 변경 사항은 안전한 것으로 간주됩니다.

더 나은 답변을 얻을 수 있도록 최종 목표가 무엇인지 설명하면 유용 할 것입니다. 필요한 것은 emacs에서 호출 할 수있는 간단한 별칭 일 수 있습니다.

+0

나는 여기에 비동기가없는 무언가를 사용해야한다고 생각한다. magit은 @Eli Barzilay가 말했듯이 그것을 위해 설계되지 않았다. 몇 가지 자식 저장소를 동기화하고 추가 스크립팅을 추가 할 필요가있는 개념적 최종 목표는 없습니다. 그러나 elisp을 사용하여 향상시킬 수있는 방법을 발견하기 전까지는 간단합니다 (예 : 구성 파일 추가 구매). – Cynede