簡體   English   中英

為什么git有時會凍結在git-credential-osxkeychain上?

[英]Why does git freeze on git-credential-osxkeychain sometimes?

當我做cd some-repo; git push origin master cd some-repo; git push origin master在我的bash終端中cd some-repo; git push origin master ,它並沒有要求我輸入用戶名/密碼,因為我猜git已經保存了該名稱(很久以前,我不記得它的詳細信息)。 我正在將GitHub存儲庫作為遠程源。

所以我有一個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

如果我殺死了最子級的git-credential-osx進程,我的程序將繼續執行(因為最父級的git命令完成),輸出結果並不令人驚訝,例如:

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終端中似乎總是工作(不要求我輸入任何用戶名密碼或其他stdin),但有時卻掛在git-credential-osxkeychain上(可能在stdin上要求輸入)何時從C ++程序運行它?

我嘗試在git-credential-osxkeychain上尋找手冊頁,但找不到任何東西。 僅運行它會打印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)。

沒有太多信息,我的猜測是掛起取決於您的登錄鑰匙串是否當時被鎖定。 在Mac上,如果登錄鑰匙串已解鎖,則獲取用戶名和密碼的查詢可以不受阻礙地進行。 但是,如果鑰匙串被鎖定,則Mac OS X會提示您輸入登錄密碼以解鎖鑰匙串。 我懷疑對話框在那里,只是藏在某些東西后面,所以您可能會錯過它。 它會等待您輸入密碼,從而有效地掛起該過程。

這里有關於gitcredential基礎結構的更多信息,在這里有更多有關API(包括幫助程序的命令行)的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM