當我在我的bash終端上做cd some-repo; git push origin master
時,它並不要求我輸入用戶名/密碼,因爲我猜git已經保存了它(這是很久以前我不記得詳細信息的原因了)。我正在推動GitHub回購作爲遠程起源。爲什麼git有時會凍結git-credential-osxkeychain?
所以我有一個C++程序調用fork和
execl("/bin/bash", "/bin/bash", "-c", "cd some-repo; git push origin master", (char *)0);
然後爲孩子bash進程結束等待。
有時它工作得很好,但其他時間(看似隨機)它會凍結。望着正在運行的進程層次,我看到:
MyProgram
git
git-remote-http
git
git-credential-osxkeychain
如果我殺了孩子最混帳憑據OSX過程中,我的程序恢復(因爲父母最混帳命令完成),用並不奇怪輸出,如:
error: git-credential-osxkeychain died of signal 15
error: RPC failed; result=7, HTTP code = 0
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
我的問題:爲什麼git push origin master
似乎總是工作(不問我的任何用戶名的密碼或其他標準輸入)在bash終端,但掛起(可能會要求對標準輸入的東西)上的git-憑證-osxkeychain有時但不是其他時候,當我從我的C++程序運行它?
我試着在git-credential-osxkeychain上尋找man page並且找不到任何東西。運行它只打印Usage: git credential-osxkeychain <get|store|erase>
這對我來說不夠自理。謝謝!
我正在運行OS X 10.8.3; git 1.7.12.4版(Apple Git-37); GNU bash,版本3.2.48(1) - 釋放(x86_64-apple-darwin12)。
你是ssh'ing到盒子裏,或本地運行?你碰巧看到一個窗口彈出窗口詢問你的登錄密碼嗎?或者它可能隱藏在窗戶後面?憑證助手是相當新的,所以你的密碼可能還沒有在鑰匙串中。但是,您可能必須不時「解鎖」鑰匙串,因此您應該會看到一個對話框,彈出詢問您的登錄憑證的信息。 – jszakmeister
我在本地運行。我沒有看到任何彈出式窗口,這次我嘗試過尋找它。它沒有顯示出來。但是,這聽起來很可能是造成這個問題的原因。我想它是彈出來的,但事實並非如此。但是,如果我使用Terminal.app,則不會發生這種情況,這隻會發生在我的應用程序中。也許它與默認的環境變量有關...... –