2013-11-09 1 views
1

현재 "rebase + no-ff 병합"워크 플로를 자동화하는 명령 줄 루비 젬을 https://gist.github.com/jbenet/ee6c9ac48068889b0912에서 논의하고 있습니다. 이 보석에 대한 WIP 코드는 https://github.com/gsmendoza/git_pretty_accept/tree/git_pretty_accept입니다. 보석은 같은 것을 할 것입니다 :ruby ​​스크립트에서 git이 메시지 편집기를 열도록 요청하는 방법

git co master 
git pull 
git co pull_request 
git rebase master 
git co master 
git merge --edit --no-ff pull_request 
git push 
git branch -d pull_request 
git push origin:pull_request 

내가 루비를 통해이 자식 명령을 실행하려고, git merge --edit --no-ff pull_request 내가 그것을 것이라고 희망처럼 자식이 메시지 편집기를 커밋 열리지 않습니다. 대신, 나는 자식이 편집기에서 빈 병합 메시지를 받고 루비가 나머지 스크립트와 함께 계속한다고 생각한다.

아이디어가 있으십니까?

답변

0

그냥 your code을 읽습니다.

`git merge --no-ff --message "#{merge_message}" #{branch}` 

루비에서이 백틱 구문은 STDIN 및 STDOUT을 리디렉션합니다.

간단하게 대신이 시도 :

system("git merge --edit --no-ff #{branch}") 

system 기능은 STDIN/STDOUT을 건드리지 않고, 프로세스를 포크와 서브 프로세스 마무리 기다립니다. 나는 그것을 테스트하고 작동합니다.

+0

네,이 질문에서 git merge 호출을 수정했습니다. 이 젬에서는 --message 옵션을 사용했습니다. 그러나 대신 --edit를 사용하는 것이 좋습니다. 역 따옴표 대신에'system'을 사용하여 계속 시도 할 것입니다. 왜냐하면 이것이 별개의 질문 (http://stackoverflow.com/questions/19873593/open-text-editor-in-a-ruby-script)에서도 권장 되었기 때문입니다. 감사! – gsmendoza

+0

수정 됨. 내가 대답하기 전에'--edit'을 시도했는데 성공했습니다. 실수를 복사하여 붙여 넣기 만하면됩니다. – miaout17

+0

그것은 않습니다! 그리고 나는 IO.pipe magicky라고 부를 필요가 있다고 생각했다. :) – gsmendoza

관련 문제