Posted by reedboat on Jan 7, 2011 in
软件
git和hg等分布式代码管理工具相比较SVN的一个重要缺陷是权限控制问题。不过今天发现了一个工具gitolite(https://github.com/sitaramc/gitolite/blob/master/doc/3-faq-tips-etc.mkd#_security_access_control_and_auditing), 提供了很精细的权限控制。能够控制代码的读写,目录、分支的创建,读写,删除。通过用户分组,正则匹配等方式提供多个代码仓库的批量授权等。工具是用perl写的,实现方式基本上是通过SSH公钥和Git的hook来做的。虽然配置比较复杂,但是作为企业代码管理控制的话还是很不错的。
这里还有一份中文文档,讲解的非常详尽。http://www.ossxp.com/doc/git/gitolite.html
Tags: git, gitolite, 授权, 权限管理
Posted by reedboat on Aug 27, 2010 in
web
公司新成立,一切从头开始,首先面临的是技术选型。
我们的项目管理工具主要在Trac, Jira, Redmine中间选择,而SCM工具在svn,git,hg之间选择。
Trac,python写的开源软件,功能主要包括缺陷跟踪,项目管理,Wiki,与SCM工具交互。
Jira,java写的,收费软件,功能强大,使用方便,与该公司的非常强大的wiki工具Confluence配合良好。
Redmine,Ruby开发的,免费软件,比Trac多了些项目统计等功能,没有wiki,不过可以配合开源的一款比较好的wiki工具如xwiki等。
虽然Jira功能最强大,使用最方便,因为企业版是收费的,而且还不便宜,无奈放弃了。Redmine使用ruby开发的,我们不太熟悉,修改起来相对麻烦。所以还是选择了我们已经使用过一段时间的Trac。
至于SCM工具,我们的选择主要集中在svn, git和hg之间选择。svn是集中式的,git和hg是分布式的。
SVN的优势在于大家都熟悉,使用简单方便,跨平台容易,而且各种工具支持非常好,比如编辑器、GUI工具、项目管理工具等,权限管理也比较容易。劣势在于Merge不方便,没有轻量级的分支,不能离线提交。
GIT的优势已经用过一段时间,比较熟悉了,轻量级的分支非常好,merge方便,离线提交,命令非常强大(这也导致学习成本过高)。劣势是Windows支持有些小问题,GUI工具不成熟,命令和选项比较复杂,学习成本较高,内部没有权限管理机制,提交历史有可能被破坏。
HG的优势在于,merge简单,跨平台支持良好,离线提交,学习成本相对git要低一些。劣势是没有轻量级分支,不过通过插件bookmarks和localbranches基本可以实现,内部没有权限管理工具,。
svn之前的公司使用过一段时间,当团队人数和项目较多时,svn有比较多的问题,merge简直是个噩梦。git和hg的权限管理,通过apache基本可以实现。git的学习成本,windows支持和历史安全问题使得我们最终选择使用hg, 通过上面提到的两个插件也基本实现了轻量级分支。
最终我们选择了Trac+Hg, 并通过相应的插件和配置,实现两个的协同工作。
其它的:
Server OS采用Debian,
Web Server采用Nginx,
编程模型采用通用的PHP+Mysql,
Tags: git, hg, svn, trac