자식 페치를 할 때 출력을 얻으 려하지만 사용자 이름을 묻는 것이 멈추고 그걸 감지 할 수 없다.파이썬에서 msysgit에 사용자 이름을 물을 때 출력을 얻는다. (창문에)
cmd = 'git fetch origin master'.split()
import subprocess
p = subprocess.Popen(cmd, cwd='.',stderr=subprocess.PIPE)
while p.poll() is None:
r = p.stderr.read(1)
print(r)
을 그리고 그냥 아무것도 인쇄하지 않고 중단 : 파이썬 스크립트에서
즉이 : 내가하고 있어요. 만약 stderr를 파이핑하지 않고 실행했다면, 사용자 이름을 묻는 메시지가 나타납니다 (그래서, 쓰고 있지만 stderr.read는 아무것도 탐지하지 않습니다).
[16:41:45 X:\]python test.py
Username for 'my.domain.com.br':
내가의 process.stdin에 서면 아무 소용 표준 입력과 많은 다른 일을 닫는는 popen의 BUFSIZE을 변경,() 직접 stderr.fileno 처리 시도했습니다. 누구든지 그 일을 할 수있는 방법을 알고 있습니까? (내 생각에 msysgit은 플러시하거나 새로운 라인을 작성하지 않고 파이썬이 제대로 처리 할 수없는 사용자 이름을 묻는 것입니다. 어떤 경우에는 msysgit에서만 수정 될 수 있습니까? - 쉘에 나타나지만 이상한 일인가).
컨텍스트 : 한 번에 여러 저장소 (https://github.com/fabioz/mu-repo)를 처리 할 수 있으므로 여러 저장소를 동시에 처리 할 수 있으므로 프로그램을 사용하고 있습니다 너무 많은 것들이 왜곡 된 것처럼 보이기 때문에 실제로는 옵션이 아닙니다 (ssh 액세스가 지정되었거나 암호가 이미 다른 수단을 통해 설정되어 있다면 모든 것이 작동하지만 사용자에게 프로세스를 말하게하는 방법을 원합니다. 입력을 기다리는 대신 입력을 기다리는 것입니다. 패스워드를 묻는다면 자식을 실패하게 만드는 방법이 있습니다.
어떤 특별한 이유 당신이 좋아 [Dulwich] (http://www.samba.org/~jelmer/dulwich/docs/index.html) 나 [pygit2] (https://github.com/libgit2/pygit2)와 같은 쉘 명령을 사용하십시오.)? – R0MANARMY
하나는 단순성 (예 : 추가 컴파일 된 라이브러리 없음)이고 다른 하나는 디자인 상 msysgit (즉, 여러 프로세스를 처리하고 출력을 동기화하는 문제임)에 불과하므로 많은 것들이 필요하지 않기 때문입니다. 커맨드 라인을 재발 명하기 위해서, 한번에 여러 repos를 다루는 적절한 방법이있다. (사실 나는 서브 모듈이나 mr을별로 좋아하지 않는다.) –
꽤 합리적으로 보이지만 더 많은 도움을 줄 수는 없지만 다른 도구를 배제하고 배제한다는 데 아무런 해가 없을 것이라고 생각합니다. – R0MANARMY