公司最近要求将配置管理独立出来,由专门的同事进行管理。
这里将版本控制服务器安装的情况记录下来以备参考。
一、系统环境
操作系统:centos6.4
版本服务端:gitolite subversion
版本客户端:git svn
二、gitolite的安装
1、安装所需要的组件
yum install perl openssh git
2、添加git专用用户
adduser--system --shell /bin/sh --create-home --home-dir /home/git git
注: --system创建系统用户
--shell 用户shell权限
--create-home创建用户目录
--home-dir 用户目录
3、 切换到git用户
su git
4、克隆gitolite项目安装文件
git clone git://github.com/sitaramc/gitolite
注:这时将在/home/git目录下clone出gitolite目录。
5、安装gitolite
在git用户目录下建立bin文件夹,并将gitolite安装到此目录下面mkdir-p $HOME/bin
gitolite/install -to $HOME/bin
注:如果报错,那就是缺少模块,根据提示少啥就安装啥(请用root用户安装)。
6、在本地生成密匙对并上传到服务器
ssh -keygen
查看~/.ssh文件夹,有id_rsa.pub 和 id_rsa两个文件,改名admin.pub后上传pub文件到服务器$HOME(/home/git)目录下
scp ~/.ssh/admin.pub serverUserName@serverHost:/home/git
$HOME/bin/gitolite setup -pk admin.pub
就这样安装好了gitolite,你可以进入你的仓库文件~/repositories看看,应该增加了两个仓库了文件了gitolite-admin.git 和 test.git。其中前者是管理仓库的,后者是测试用的。
三、 管理gitolite仓库
1、在本地将管理gitolite-admin仓库clone下来
#git clone git@serverHost:gitolite-admin
2、配置用户权限和仓库然后进入仓库可以看到conf和keydir两个文件夹。其中conf/gitolite.conf就是添加用户/仓库的配置文件,keydir目录下就是放置对应用户的公钥的地方。
例子:
repo gitolite-admin
RW+ = admin
repotesting
RW+ = @all
@mygroup=adminusr1usr2
repo myrepos
RW+ =@mygroup
3、提交到服务器
修改好后commit并直接push到服务器,服务器将自动创建对应的仓库和用户。
四、SVN服务的安装
1、安装svn
yum install -y subversion
2、验证安装是否成功
svnserve --version
3、创建svn版本库
mkdir svn
svnadmin create svn/repo
注:repo是版本库名称
4、配置svn
创建版本库后,在这个版本库的conf目录下会生成3个配置文件:
[root@singledb conf]# pwd
/root/svn/repo/conf
[root@singledb conf]# ls
authz passwd svnserve.conf
说明:
(1)svnserve.conf: svn服务综合配置文件。
(2)passwd: 用户名口令文件。
(3)authz: 权限配置文件。
4.1 修改passwd文件
注:shang为用户名,123456为密码
4.2配置可使用明文密码
4.3修改authz文件
注:repo为之前建立的svn版本库名称
4.4修改svnserve.conf
5.启动和停止svn
5.1启动svn
[users]
shang=123456
li=123456
[plain]
vi /$HOME/.subversion/servers
#找到以下内容,注释去掉并改成yes就行了
store-plaintext-passwords = yes
[plain]
[groups]
team=shang,li
[repo:/]
@team=rw
[plain]
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
[plain](启动)
svnserve -d -r /root/svn/
5.2关闭svn
[plain]
ps -aux |grep svn
kill -9 进程id
[plain]
01. $ mkdir MyProject
02. $ mkdir MyProject/trunk
03. $ mkdir MyProject/branches
04. $ mkdir MyProject/tags
05. svn import MyProject svn://192.168.5.228/repo/MyProject -m "first import project"
[plain]
01. svn co svn://192.168.5.228/repo/MyProject