控制git push的使用者的合法性

2021-06-28 04:45:50 字數 1321 閱讀 3571

由於公司機器比較多,有時候團隊用git開發的時候,比較隨意,隨便一台機器上就check,隨便設定乙個使用者,更改之後就提交,搞的提交的記錄沒有任何可參考性。

而git正常情況沒法去檢查使用者的合法性,gitosis也不好使,ssh登入的問題,增加個組直接在sshd-config限制一下更方便,後來網上搜了一下,可以用git hook來解決。(如果開發人員非常非常多這樣做可能顯的麻煩了),如下:

$gitdir/hooks 下有很多指令碼,其中pre-receive:

[[pre-receive]]

pre-receive

~~~~~~~~~~~

這個hook由遠端資源庫的'git-receive-pack'觸發,此時,'git push'已經在本地資源庫執行完畢.

此時,正準備update遠端資源庫的refs,且pre-receive hook已經被觸發並執行完畢.

它的退出狀態,決定了全部ref的update是否可以進行.

這個hook,每個接收操作,僅執行一次. 它不接受引數,但可以從標準輸入讀取以下格式的文字(每個ref一行):

sp sp lf

這裡的 `` 是ref中原本的object名,

`` 是ref中老的object名 and

`` 是ref的全名.

當建立乙個新ref,`` 將是 40, 即字元`0`.

(譯者注: sp=空格, lf=\n)

如果這個hook以非0狀態退出,則所有ref都不會被更新(update). 

如果以0退出, 仍可以通過<> hook 來拒絕特定的ref的更新.

因此在hooks下新建pre-receive指令碼:

#!/bin/sh

userlist=/etc/git_allow_users

read old new refname 

name=$(git log -1 --pretty=format:%an $new)

email=$(git log -1 --pretty=format:%ae $new)

check_user=`cat  $userlist|grep -c $name:$email`

if [ "$check_user" = "0" ]

then

echo "$name:$email permission denied, please check and set user.name&user.email !"

exit 1

else

exit 0

fi當然在/etc/git_allow_users的檔案中加入相應的允許的使用者列表。

這就在使用者的提交的時候就可以通過使用者列表進行控制了。

scanf控制使用者輸入資料的合法範圍 演算法 c語言

如題 要求用a,b,c三個正整型變數來儲存使用者戶輸入3個值。看程式實現 include int main printf d d d n a,b,c return0 scanf函式返回值為int型。如果a和b都被成功讀入,那麼scanf的返回值就是2 如果只有a被成功讀入,返回值為1 如果a和b都未...

Python合法的使用者名稱

有一些 註冊使用者時,會對使用者名稱長度進行限制,比如使用者名稱的長度必須在6 含 18 含 位之間。請用程式實現 用函式實現對使用者名稱的合法性進行檢查。函式定義 def check username username pass引數說明 username是乙個任意長度的字串,表示待檢查的使用者名稱...

控制輸入合法資料的例題

下面 的功能是將百分制成績轉換為5分制成績,具體功能是 如果使用者輸入的是非法字元或者不在合理區間內的資料 例如輸入的是a,或者102,或 45等 則程式輸出 input error 並允許使用者重新輸入,直到輸入合法資料為止,並將其轉換為5分制輸出。include intmain while fl...