有沒有什麼爲什麼強制用戶不要更改.gitignore文件。我的意思是讓我們說有人會改變或刪除這個文件並推送這個改變。防止用戶更改.gitignore文件?
回答
您可以在服務器端設置預接收掛鉤,如果修改了.gitignore
,則拒絕推送。
Git是分散的。一旦有人克隆了回購,它完全在他們的控制之下,包括.gitignore
文件。
什麼你可以要做的就是防止用戶通過使用Git hook用於檢查指定的文件類型,並拒絕用戶推到某些文件推送到服務器。
請閱讀pre-receive hooks。並編寫一個腳本來搜索給定的文件類型。
檢查您的回購.git/hooks
會有一個示例文件列表,告訴您如何處理它。還請閱讀this article以避免容易犯的錯誤。
編輯
我沒有任何好處的shell腳本,但這裏是不允許.php然後.css文件並告訴用戶中止前一個小腳本。它位於.git/hooks/pre-receive
。請記住使其可執行(chmod +x
),否則它將無法工作。
#!/bin/sh
while read oldrev newrev refname
do
if [[ `git diff-tree --no-commit-id --name-only -r $newrev | grep -e 'css\|php'` != "" ]]
do
echo "Cannot push this"
exit 1;
fi
end
隨着,預接收鉤被稱爲VREFS(Virtual Refs,也listed here):不設置一個直接在由gitolite管理回購通過在VREF
目錄添加VREF預接收鉤,做到這一點gitolite-admin
回購,而Gitolite會將其推廣到回購。
「restricting pushes by dir/file name」部分說明如何通過更改的目錄和文件的名稱限制推送。
這是你不需要添加到VREF
目錄的一個VREF,實際上(它是由Gitolite管理的更新掛鉤的一部分,對於二級更新掛鉤,see here)。
因此,修改gitolite-admin
回購中的gitolite.conf
,並將該管理回購推回到gitolite服務器就足夠了。
repo foo
RW+ = @senior_devs
RW = @junior_devs
- VREF/NAME/Makefile = @junior_devs
這很酷,它的作用就像一個魅力:P Thx非常。我還有一個問題有點偏離主題,您能否建議我使用GIT與QA團隊和代碼審查人員在開發,測試,分期和生產服務器環境中進行良好的工作流程? – 2013-02-15 10:55:50
@MarceliPo git-flow是當前的標準,並且是一個很好的起點(http://stackoverflow.com/a/12927985/6309) – VonC 2013-02-15 14:20:13
@MarceliPo,如果這回答了你的問題,你可以把它標記爲正確的回答,以便其他訪問者知道,並且VonC會得到適當的歸屬? :) – Swivel 2013-10-10 16:34:22
- 1. 防止用戶更改
- 2. 防止用戶更改文本文件中的特定行
- 3. 防止彈簧連接文件被用戶更改
- 4. 如何防止用戶手動更改文件?
- 5. C#,如何防止用戶更改文件夾權限?
- 6. 防止用戶更改輸入法
- 7. 如何防止用戶更改窗口
- 8. 防止用戶更改DataGrid的SelectedItem
- 9. 防止用戶更改爲字體
- 10. 防止文件被刪除和更改
- 11. 有條件防止文本框更改
- 12. 防止用戶更改asp.net文本框中的某些文本
- 13. 防止用戶篡改html
- 14. 使用.gitignore防止分支誤用
- 15. .gitignore不會停止在文件中跟蹤更改
- 16. 防止DateTime更改
- 17. 防止UISegmentedControl更改
- 18. 防止用戶更改他們的電子郵件別名
- 19. 如何防止用戶更改/刪除其他用戶數據
- 20. Devise/Rolify/CanCan 2.0:防止用戶更改用戶角色
- 21. 防止用戶查看JavaScript文件
- 22. 如何通過終端編輯.gitignore文件/更改.gitignore文件規則
- 23. 文件驗證,防止C++中的文件更改
- 24. 防止更改文本框的值
- 25. 防止用戶
- 26. 防止用戶
- 27. 防止用戶
- 28. 防止使用Javascript更改文件輸入(jQuery)
- 29. BootstrapToggle如何防止更改事件
- 30. 防止更改事件的默認值
如果你在本地文件系統層面講,有可能是設置'chmod'到Git的工作目錄中的文件的方式,但在git倉庫的水平,可能沒有任何辦法做到那。 – ConcurrentHashMap 2013-02-13 14:11:32
那麼我使用gitolite來管理對回購的訪問。 – 2013-02-13 14:16:40
當您使用Gitolite管理回購站時,我不會推薦掛鉤。看到我的答案。 – VonC 2013-02-13 14:28:45