更新(2011-04-07): 终于开始写安装说明文档了 https://github.com/harryxu/gitube/wiki/%E5%AE%89%E8%A3%85%E8%AF%B4%E6%98%8E
git是一个非常不错的版本控制软件,如果需要一个可以远程push代码的地方,开源软件可以选择像github这样的网站,如果是自己的私有代码,也可用利用一台比如linux的服务器,几乎不用什么配置,只需要支持ssh就能往上面push代码。
但是如果是一个小型团队,可能就要涉及到一些权限的控制,还有考虑版本库建立还有查看的易用性。
之前我用过gitosis,这是个不错的git管理工具,有基本的权限控制,不过所有的操作都是需要登录到服务器后使用命令行进行,对于一个人的东西当然没什么问题,但是如果这个服务器服务于多人,那么其他人想建立一个仓库的时候就必需联系管理员或自己登录上去操作,这样对命令行不熟悉的人不太方便,如果可以像github那样通过web界面来操作的话那就很方便了。
于是我就基于django框架写了一个小小的应用,可以通过web界面来建立git仓库,并且有一些很简陋的权限设置。
基本的使用流程是
- 登录(通过openid)
- 如果是第一次注册,为自己的帐号里添加ssh公钥(用过github应该都知道是什么意思吧)
- 建立一个项目(注意,我这个东西的项目并不是一个git仓库)
- 进入项目后可以在这个项目下面建立1个或多个仓库
- 复制显示出来的仓库地址然后就可以往里面push代码了。
- 设置项目成员(也就是与其他人共享了)
基本也就是这些功能,建立项目和仓库的时候,可以写一些描述信息,方便知道这个项目和仓库里放的是什么。
除了对git仓库的一些基本操作,这个东西还有个要做的就是管理linux用户目录下的 .ssh/authorized_keys ,因为用户提交上来的ssh公钥都是保存在这个文件里,所以运行这个应用必须使用指定的用户权限,之前说的apache下使用指定用户运行虚拟主机就是为了解决这个问题,不过我现在使用fastcgi+nginx来跑这个东西,所以只要用。sudo su 用户名 -c "./manage.py runfcgi ....." 就行了,方便许多。
这个东西我给他起名gitube,基于django框架开发的,也使用了一些其他的库,操作git仓库和在push和pull的时候做权限判断使用的还是gitosis的代码。
代码都放在github上了: http://github.com/harryxu/gitube 这玩意我有段时间没有更新了,不过和几个朋友一直在使用中,目前还算满足我们的需求。
在已实现的功能中还是有许多需要改进,比如整个目录结构需要调整,加入setuptools的安装功能,权限机制的改进,打算以后用django1.2的object-level permissions hook来试试看。
现在还没有详细的安装配置说明,有空写下,如果需要试用的话需要看下代码或者联系我。
如果你有兴趣参与一起开发的话,欢迎联系我阿,哈哈,希望可以做成一个比较完善的东西。
下面是一些截图:



