1 关于版本节制
版本节制是一种记录一个或若干文件内容变革,以便未来查阅特定版本修订环境的系统。有以下三种版本节制系统:
1. 当地版本节制系统
很多人习习用复制整个项目目次的方法来生存差异的版本,或者还会更名加上备份时间以示区别。这么做独一的长处就是简朴。不外弊端也不少:有时候会夹杂地址的事情目次,一旦弄错文件丢了数据就没法取消规复。
为了办理这个问题,人们好久以前就开拓了很多种当地版本节制系统,大多都是回收某种简朴的数据库来记录文件的历次更新差别。图示如下,
2. 会合化的版本节制系统
会合化的版本节制系统( Centralized Version Control Systems,简称 CVCS )可以或许让在差异的开拓系统上的开拓人员协同事情。这类系统,诸如 CVS,Subversion 以及 Perforce 等,都有一个单一的会合打点的处事器,生存所有文件的修订版本,而协同事情的人们都通过客户端连到这台处事器,取出最新的文件可能提交更新。多年以来,这已成为版本节制系统的尺度做法
3. 漫衍式版本节制系统
漫衍式版本节制系统(Distributed Version Control System,简称 DVCS ),像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不但提取最新版本的文件快照,而是把代码客栈完整地镜像下来。这么一来,任何一处协同工浸染的处事器产生妨碍,过后都可以用任何一个镜像出来的当地客栈规复。因为每一次的提取操纵,实际上都是一次对代码客栈的完整备份,
更进一步,很多这类系统都可以指定和若干差异的远端代码客栈举办交互。籍此,你就可以在同一个项目中,别离和差异事情小组的人彼此协作。你可以按照需要设定差异的协作流程,好比条理模子式的事情流,directadmin安装 directadmin汉化,而这在以前的会合式系统中是无法实现的。
2 关于Git
Git是漫衍式版本节制系统的一个完美实现,它与会合式版本节制系统SVN的根基区别如下:
Git是漫衍式的,而SVN不是
Git和SVN一样有本身的会合式版本库或处事器。但,GIT更倾向于被利用于漫衍式模式,也就是每个开拓人员从中心版本库/处事器上chect out代码后会在本身的呆板上克隆一个本身的版本库。
Git将内容按元数据方法存储,而SVN是按文件
所有的资源节制系统都是把文件的元信息埋没在一个雷同.svn,.cvs等的文件夹里。假如你把.git目次的体积巨细跟.svn较量,你会发明它们差距很大。因为,.git目次是处于你的呆板上的一个克隆版的版本库,它拥有中心版本库上所有的对象,譬喻标签,分支,版本记录等。
Git分支和SVN分支的差异
SVN的分支就是版本库中的别的一个目次,而Git的分支却是整个版本库的一个快照,并且可以在同一个事情目次下快速的在几个分支间切换。
Git没有一个全局的版本号,而SVN有
SVN的版本号实际是任何一个相应时间的源代码快照。而Git并没有这样的一个全局版本号,这也是Git缺少的最大的一个特征
Git的内容完整性要优于SVN
Git的内容存储利用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在碰着磁盘妨碍和网络问题时低落对版本库的粉碎。
Git的根基事情流程如下:
在事情目次中修改某些文件。
对修改后的文件举办快照,然后生存到暂存区域。
提交更新,将生存在暂存区域的文件快照永久转储到 Git 目次中。
3 Git处事器搭建
1. 情况陈设
系统情况:处事器端:CentOS 6.5 ,ip:192.168.56.1
客户端:CentOS 6.5 ,ip:192.168.56.101
软件版本:处事器端:源码编译安装,git-1.9.0.tar.gz
客户端:yum在线安装机制
2. 安装
2.1 处事器端:
#yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
#wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz
#tar zxvf git-1.9.0.tar.gz
#cd git-1.9.0
#make prefix=/usr/local all
#make prefix=/usr/local install #root用户运行
查察版本号:git --version
git version 1.9.0
安装gitosis:gitosis为Git用户权限打点系统,通过打点处事端的/home/git/.ssh/authorized_key文件来执行对用户权限的打点,是一个python模块包
#yum install python python-setuptools
#git clone git://github.com/res0nat0r/gitosis.git
#cd gitosis/
#python setup.py install
显示Finished processing dependencies for gitosis==0.2即暗示乐成
2.2 客户端安装:
#yum install git
#git --version
git version 1.7.1
3. ssh配置
客户端出产密钥并上传随处事器端:
#ssh-keygen -t rsa
#scp ~/.ssh/id_rsa.pub [email protected]:~/
处事端查察已经上传的密钥:ls ~/id_rsa.pub
4. 处事器上生成git用户,利用git用户并初始化gitosis
添加用户git:
#useradd -r -s /bin/sh -c 'git version control' -d /home/git git
配置权限:
#mkdir -p /home/git
#chown git:git /home/git
在处事器端生成打点库:
#sudo -H -u git gitosis-init < ~/id_rsa.pub
Initialized empty Git repository in /home/git//repositories/gitosis-admin.git/ Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
注解:
1. 生成的gitosis-admin为Git的用户会见权限打点库,gitosis通过这个git库来打点所有git库的会见权限。
2. 通过执行初始化,该公钥的拥有者就能修改用于设置gitosis的谁人非凡Git客栈了
修改上传权限:
#chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
5. 客户端导出打点
#mkdir -p /git-repo/
#cd /git-repo/
#git clone [email protected]:gitosis-admin.git
#cd gitosis-admin
#find .
./gitosis.conf
./keydir
.[email protected]
注解:
gitosis.conf文件用来配置用户、客栈和权限的节制文件
keydir目次则是生存所有具有会见权限用户公钥的处所
.[email protected]:如前所述,该用户具有会见权限
6. 客户端建设及配置打点项目
#cd /git-repo/gitosis-admin
查察已经上传密钥
#ls keydir/
[email protected]
授权和权限节制
#vim gitosis.conf
[gitosis]