git怎麼控制成員的許可權?

最近做了幾個項目(學生團隊),用github來管理代碼,但是碰到了一些問題。

比如最近有一個Thinkphp作為框架的項目,但是用git來管理的話所有人都能下載整個網站的源代碼,裡面的前端代碼,後台代碼,配置文件都在git裡面,而且如果後台開發的小夥伴需要用到資料庫在本地調試,所以我們把資料庫也放在git裡面....這樣就有了一個問題...你的代碼可以隨時被拷貝走,整個網站,代碼+資料庫。

所以我就有了這個問題:git怎麼控制許可權,比如寫後台的同學只能下載Lib文件夾下面的代碼(Thinkphp後台代碼的主要目錄) 前端同學只能下載Tpl文件夾和資源文件夾下面的代碼, 特殊的文件夾比如Conf配置文件夾,只能特殊的控制資料庫密碼的人(運維)才能下載查看。

另外....對於後台的同學,本地調試一般都要用到資料庫,然後怎麼控制資料庫泄露的問題,難道只能放在git裡面共享么?....

繼續求解答...感謝指導....


分幾個repository,這是最簡單的作法。

更簡單的是用svn。


學生團隊搞複雜的許可權管理意義何在啊?我傾向於組織內部清晰透明。允許任何人複製查閱代碼,僅作 push 許可權的控制,搭配 pull-request 服用,用來規範管理和代碼校驗。

如果一定要複雜的許可權控制,不妨搭配 GitLab 服用。

大文件請不要放置在 git 里。如果一定要控制 sql,可以嘗試分離數據與表結構,或寫成 migrate 的形式。

不知道是不是符合你的情況,不過提點一下,無則加勉:

找學生義務來做東西,還擔心別人竊取你的機密,最好的辦法是給錢簽合同。不做利益綁定,還要人付出一腔熱血,那叫太天真。


集中式的版本控制用SVN,別虐自己。


回答什麼GIT許可權管理的真的知道GIT的許可權管理意味著什麼么?

GIT的許可權管理是說控制用戶能不能PUSH或者DELETE分支,或者能不能PUSH代碼,而不是能不能訪問某個目錄的文件。

對目錄和文件的可讀是GIT的最基本要求,不可能做到針對目錄級別的不可讀

唯一可行的就是多建立幾個獨立庫,然後用外部引用的方式弄到一個總的GIT庫里。再獨立庫裡面做用戶的分配

但是GIT不能支持某個目錄下面單獨指定文件的不可讀,所以你要是做複雜讀寫許可權控制,除非一個願意細化到某些配置文件就獨立開庫並指定用戶,否則別找虐了。

你要的就是集中式的管理,用GIT幹嘛呢?耍帥?

從技術上將,Git可能永遠也做不到類似SVN的路徑授權(讀授權):
? 如果允許按照路徑授權,則各個克隆的關係將不再是平等的關係,有的內容多,有的內容少,分散式的理念被破壞
? 如果只有部分路徑可讀,則克隆出來的提交和原始提交的提交ID可能不同。因為提交ID是和提交內容有關的,克隆中提交的部分內容被丟棄,勢必提交的ID也要重新計算
? 允許全部代碼可讀,只允許部分代碼可寫,在版本控制的管理下,是沒有多大實際意義的,而且導致了提交的邏輯上的不完整。
那麼有什麼辦法來解決授權的問題?
1. 公司內部代碼開放。即代碼在公司內部,對項目組成員一視同仁的開放。
2. 公司對代碼庫進行合理分解,對每個代碼庫分別授權。即某個代碼庫對團隊成員完全開放,對其它團隊完全封閉。
3. 公司使用Subversion做集中式的版本控制,個人和/或團隊使用 Git-svn。這樣在無法改變公司版本控制策略時,程序員可以採用的變通之法。
4. Git伺服器的部署實際上可以使用鉤子對分支和路徑進行寫授權,即可以控制誰能夠創建分支,能夠寫特定文件。


我平時就用自己的伺服器上的「git server」開發,用github還是有隱私問題的,畢竟不是打算開源的東西。

你這個問題兩個解決辦法:

1、不同的模塊分不同的repository,每個目錄設置不同的linux用戶組訪問許可權,這樣就不是每個人都能完全讀寫其他項目了。優點是簡單好弄,缺點就是人多了的話太麻煩。

2、裝一些其他的git許可權管理軟體,比如gitolite、gitosis。管理方便靈活,安裝也不麻煩。


不合理利用git了吧

首先說明,如果細化每個目錄的許可權管理,最好上svn,喜歡git的話,可以找許可權插件或者按許可權分庫。

其次,資料庫最好備測試庫和正式庫,git分支參照推薦的分支模型,分發布線、測試線、開發線、基線,發布線配置正式庫,測試線和開發線配置測試庫,這樣就可以避免測試證實混淆和正式脫褲。測試庫配讀取許可權,結構修改可以另外生成sql文檔給專人同步到正式庫,或者專人直接同步結構到正式。

還有,用github這個公共託管站的話,不也一樣被人看到…………,自建git託管吧。


gitolite


這個問題不用糾結了。 如果怕源碼泄露,公司內部的項目,用svn就行了。 如果是開源的項目,就上git。 不用讓git還搞個什麼目錄許可權的。 GIT好用,但是也不是說svn就是垃圾了。 都是面向不同的應用場景, 根據企業的實際情況來做工具決策。不要以為git用的人多,就覺得git是萬能得了。 它也只是一個工具而已,什麼工具能讓你更高效的完成工作,能夠讓公司賺到錢,那它就是好工具。 不要為了GIT而GIT,形而上學不好。


svn方便


項目負責人 . 新建個庫.然後把開發人員加進來給予不同的開發角色. 觀察者,所有者. 然後各自fork . 各自修改. 代碼測試沒問題. 提交pr 負責人合併代碼


…………

這個……還用不到github吧?

伺服器里的git server就可以啊

前後端的代碼庫分開

後端搞後端的,前端搞前端的

不需要設置許可權的

沒必要啦


這和用不用 git 有毛關係?

不帶源碼的話,怎麼提供可運行及調用的庫?

除非大家實現設計好介面,前端訪問一個沒有真實數據的假後端,後端自己寫個單元測試用例測試自己的介面。就像水果當年搞 iPhone 一樣啊,做軟體的只能在一個假設備上跑系統。

可這效率…你真的樂意?

資料庫就更好說了,準備一個沒有真實數據的庫唄。


protected branch with dtatus check,自己寫status check 的hook腳本支持許可權管理。


推薦閱讀:

如何優雅地使用 Git?
github for windows安裝失敗了,怎麼辦?
github上怎麼刪除一個文件夾?
github 自己創建了一個項目A,我的同事fork一個B,當我的項目更新的時候,怎麼樣在他fork的repo上進行相應的更新?
Git commits歷史是如何做到如此清爽的?

TAG:版本控制系統 | Git | GitHub |