项目中对htdocs进行的分支开发,结果被svn搞悲剧了.checkout就需要20分钟,和主干合并的时候又需要20分钟,对于静态目录,htdocs的变化几乎是按照分钟来计算.每次和主干合并一次都是20多分钟,项目就不用开发了.遥想自己的小项目使用github的时候切换分支都是瞬时的.决定在这次项目中让git和svn并存.一步一步来达成这个目的.
- 搭建git服务器
- windows进行git的配置
- tortoise git实践
首先就是搭建git服务器,没有使用github的主要原因就是github时常被墙,唉,国内的互联网环境实在太差了.服务器找了一台ubuntu server.第一步就是安装git
安装python setuptools
安装gitosis,gitosis用于git权限的管理.
cd ~/src
git clone git://eagain.net/gitosis
cd gitosis
sudo python setup.py install
增加一个git用户
到现在服务器端基本就搞好了.由于基本都是windows开发,就说一下windows客户端的设置.首先下载安装msysgit,下载地址:http://code.google.com/p/msysgit/,接着下载安装tortoise git,下载地址:http://code.google.com/p/tortoisegit/
不要用tortoise git自带的那个putty key gen功能,生成的key是不对的运行git bash在本地生成rsa key,.命令如下
基本上回车就好了.key的位置在C:\Users\hepeng\.ssh
需要把后缀为pub的文件上传到服务器.然后需要在服务器执行下面命令,把这个用户设置成git管理员.
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
下面就可以本地测试了
成功后,在本地将有一个gitosis-admin目录,里面有gitosis.conf,keydir。
打开gitosis.conf,增加一块内容,members为某个用户的公钥~/.ssh/id_rsa.pub中的名字
添加一个新项目仓库
members = wolmhp@gmail.com
writable = htdocs
然后提交的服务器
git push
下面就可以clone这个htdocs啦.
在使用tortoise git操作的时候总会遇到弹出密码输入框的问题,只要把tortoise git的ssh client设置成git就可以了.
在htdocs创建 .gitignore 文件,用于忽略某些不需要进行代码管理的内容
接下来,增加成员的公钥到系统中,gitosis-admin\keydir文件夹下面,把公钥重命名成 用户名.pub 用户名就在公钥文件的最后.
修改gitosis.conf,members 后面增加公钥中的用户名,
commit并push,这个用户的权限就设置好了.
最后一个问题,在第一次clone的时候,一定要在git bash中输入
msysgit 默认是true 但是linux 默认是false,因为svn没有autocrlf这个功能,可能会导致git clone出的代码和svn管理的代码出现大量差异.
我们再使用git对静态文件进行分支管理的测试,切换分支,瞬时;合并分支,瞬时,太爽了.问题都解决了.
不过遗憾的是gitosis不能对单独一个分支进行权限管理,比较遗憾.主干想收回写的权限,好像还比较难办.