由於公司機器比較多,有時候團隊用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...