對於我現有的gitolite3-安裝,我想添加匿名訪問,僅限於一定數量的存儲庫。應該允許所有這些存儲庫讀取,而寫入操作應該受到保護。通過推送將數據傳遞給gitolite-VREF
爲此,我想通過一個令牌傳遞給gitolite存儲庫。 VREF收到令牌並檢查它是否有效。如果是,則允許對存儲庫執行寫入操作。該gitolite-conf的應該是這樣的:
repo @anonrepos
RW = @all
option deny-rules = 1
- VREF/MYTOKENREF = @all
(如果配置中有錯誤,那麼我複製他們從他們所在的PC錯誤)
而對於我想到的VREF:
#!/usr/bin/python3
token = input()
if is_valid(token): # TODO: define is_valid
exit(0) # Allow the push
else:
exit(1) # Deny it
這麼多的理論。當我嘗試推送時,由於pythons input()
引發EOFError,我得到一個錯誤。所以我不能通過stdin將信息傳遞給vref,也不能通過sys.argv
。
還是我錯了?有沒有辦法將令牌傳遞給我的vref,也許通過一些git-command-line-trickery?或者,如果我確信其背後的人是合法的,我是否還有其他方式可以允許匿名推送(字面上每個人都可以推送,所以我需要保護這些存儲庫)?我正在考慮將即將推出的提交的提交標識列入白名單,但這不是一種靈活的方式。
注:有人推應該是這樣的過程他:那他要推到倉庫的人的消息,我創建一個令牌,並將其發送給他,最後他推到倉庫成功使用提供的令牌。
這個東西的一般規則是 「通過環境變量傳遞」。但我不確定如何使用gitolite來設置它。 – torek
@torek這是一個好主意,儘管我想盡可能簡單地實現推送並傳遞環境變量並不容易在Windows系統上設置 – Sirac