authorization: both previous settings (ssh or https) are wired to call the same set of perl script, named gitolite https://github.com/sitaramc/gitolite, with as parameters:
这两个协议检测到的实际用户名
用户想要执行的 git 命令(克隆、推送或拉取)
The gitolite perl 脚本将解析一个简单的文本文件 https://github.com/sitaramc/gitolite/blob/pu/doc/3-faq-tips-etc.mkd#_security_access_control_and_auditing其中已设置授权(所有存储库的读/写访问权限,或给定存储库中的分支,甚至存储库中的目录的读/写访问权限)。 如果 git 命令所需的访问级别与该文件中定义的 ACL 不匹配,则该命令将被拒绝。
killer features https://stackoverflow.com/questions/3900015/distributed-version-control-killer-applications: Any DVCS comes with those, the main one being merging (ever tried to do a complex merge workflow with SVN? Or sloooowly merge 6000 files with ClearCase?).
That alone (merging) means you can really take advantage of branching https://stackoverflow.com/questions/2100829/when-should-you-branch/2107672#2107672, while being able at all time to merge back your code to another "main" line of development because you would do so: