$ sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
分类: LINUX
2010-09-28 18:21:55
SVN和Git的主要区别:
Git是分布式SCM,而SVN是基于服务器的,也就是说每个开发者本地都有一套git库,每个人维护自己的版本(或者合并其他人的版本),而SVN是每个人写完代码后都及时的checkin到服务器上,进行合并。
如果上面这段话还不能让你真正了解Git的好处,而不想使用git来替代你的svn的话,那么我再列举几个我认为不错的比较直观的场景:
1、可以在本地(离线)就做好版本控制,而不用时刻连网,特别是Soho一族或者喜欢经常到处跑,又喜欢在路上、车上或者马路旁边的小凳子上coding的人;这个时候你可以在自己的Git库上进行版本控制,而不用到处找网络把代码搞到svn上去。
2、分布式的SCM更加安全和健壮,有没有想过,如果你的SVN版本服务器挂掉了(硬盘坏了或者网络不可用等等),你会咋样,能修复的好么,一旦修复不好,资料都完蛋了,而Git的分布式SCM,其中的几个节点挂掉影响并不大。
3、速度,你如果使用GoogleCode或者其他的SVN服务的话,不知道你是否有呆呆的等待chenkin完成的情况(我是经常有 的),而Git,毫无疑问,速度快的多,(就算是使用GitHub也快),究其原因,应该是Git是打包好了上传,而不像SVN单个文件上传。
4、版本、分支管理
还有啥?想不来了,差不多就这样了,视个人情况而定,但是我认为Git会让你更加满意。
但是有人可能会有这样的想法,我本地使用git,然后定时的checkin到SVN上,这样岂不是更好,啊哈,好吧,你还不习惯或者还有其他的特殊情况(比如其他开发者不喜欢git,或者原来的代码在svn上等等),这里看看如何把git和svn结合起来一起使用。
1、比较笨的方法
同时使用Git和SVN,然后再各自的“忽略”列表里面加加上对方的版本库,比如在svn的忽略列表中加上.git,而同时在git的.gitignore中加上.svn;然后执行各自的命令。
2、比较靠谱的方法
使用git-svn应该算更加科学和靠谱的方法,安装好git-svn(这个是需要单独安装的)后,就可以使用啦,基本上是这样的:
mkdir 1stlog cd 1stlog && git-svn init
安装环境
$ sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
编译安装
wget
tar -xzf git-1.7.1.2.tar.gz
cd git-1.7.1.2
ls
./configure --prefix=/usr/local/git
make all
make install
安装python支持
$ sodu yum install python.i386 // $ apt-get install python-setuptools // ubuntu的yum使用此命令 $ wget $ chmod 755 ez_setup.py $ python ez_setup.py
克隆和安装 Gitosis
$ git clone git://eagain.net/gitosis.git $ cd gitosis $ sudo python setup.py install
创建git用户(不要创建.ssh)192.168.188.138
$ sudo adduser git $ su git $ cd
本地生成私钥 就是你的客户端
$ ssh-keygen -C 'pangkuo@aa.com' -t rsa
本地复制公钥到服务器
$ scp id_rsa.pub root@192.168.188.138:/home/git/id_rsa.pub
修改权限
# chown git:git id_rsa.pub
通过自己的公钥来运行gitosis-init用于初始化gitosis
# su git $ gitosis-init < id_rsa.pub //Gitosis 从使用gitosis-init脚本导入的公钥尾部的描述中获取用户名
设置post-update可执行
$ chmod 755 repositories/gitosis-admin.git/hooks/post-update
本地克隆 Gitosis 的控制仓库(在客户端)
$ git clone git@192.168.192.168.188.138:gitosis-admin.git
添加用户公钥
把用户的公钥复制一份修改成pk.pub,放入gitosis-admin/keydir/
$ git commit -am "add 添加用户pk并添加项目mos" $ git push
本地创建一个仓库并push上去:
$ mkdir mobile $ cd mobile $ git init $ touch .gitignore $ git add .gitignore $ git commit -am "init commit" $ git remote add origin git@192.168.188.138:mobile.git $ git push origin master
git 和svn 一样有自己的图形工具很方便管理
4.git与web 结合
执行下面的命令即可
/usr/local/git/bin/git clone file:///home/git/repositories/gitosis-admin.git/ /var/www/html/pk
版本库 web目录
Cloning into /var/www/html/pk...
remote: Counting objects: 15, done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 15 (delta 4), reused 1 (delta 0)
Receiving objects: 100% (15/15), done.
Resolving deltas: 100% (4/4), done.
创建完毕!
错误:fatal: '/home/git/repositories/idea-generator.git' does not appear to be a git repository#ls
fatal: The remote end hung up unexpectedly
说明你的密钥有问题,重新设置
看看ls -a 有这些文件
. .. .bash_history .bash_logout .bash_profile .bashrc
gitosis .gitosis.conf id_rsa.pub .mozilla repositories .ssh
gitosis id_rsa.pub repositories