2011-12-16 88 views
5

我想創建一個非常簡單的shell腳本,這將最終被其他應用程序調用,更新一個本地的Git倉庫:我可以在環境變量中保存git憑據嗎?

#!/bin/bash 

cd $1 
sudo git pull 

當執行這個我問憑據(我從私人BitBucket存儲庫中拉出)。

我可以(簡要)將憑證存儲在環境變量中嗎?

#!/bin/bash 

export GIT_USERNAME=<user> 
export GIT_PASSWORD=<pass> 

cd $1 
sudo git pull 

上述不起作用。會有什麼?我可以通過編程修改原始網址,但似乎有點過分。

+4

git不使用憑據,它依賴於正在使用的傳輸。你使用SSH的Git?如果是這樣,你應該看看SSH密鑰。 – 2011-12-16 16:01:13

回答

0

Git不使用憑據,它依賴於正在使用的傳輸。

9

我知道這是很老的問題,但如果你真的需要通過用戶名和密碼的HTTP基本認證,你可以只設置助手這樣的:

git config credential.helper '!f() { sleep 1; echo "username=${GIT_USER}\npassword=${GIT_PASSWORD}"; }; f' 

更新:我已經添加sleep 1的功能。在某些環境中,由於競態條件可能需要它。我有兩臺運行Debian Jessie的虛擬機。它們具有相同的體系結構,但CPU和CPU數量不同。在其中一臺機器上,幫助器工作正常,沒有sleep。另一方面則不是。經過幾個小時的調試後,我運行strace以查看發生了什麼。它神奇地開始工作。 strace只是讓git慢了一點。

+0

非常感謝!適用於基於HTTP的推送!對於SSH,我也會爲密鑰投票。 – 2017-04-21 12:27:13