背景
在电脑安装Ubuntu 14.04 LTS系统后,搭建git代码服务器来管理代码,目的是终结之前那种相互拷贝代码的协作方式。
步骤
1、准备
安装git软件包:apt-get install git
增加git用户用来专门管理git账户:adduser git
切换用户yubo.wang生成公钥文件作为管理员账户:
yubo.wang@ubuntu:~$ ssh-keygen
.ssh/id_rsa 私钥
.ssh/id_rsa.pub 公钥,修改为777权限
拷贝 .ssh/id_rsa.pub 公钥文件到/home/git/id_yubo.pub目录下
2、安装
服务器端:
git用户,目录/home/git,增加的文件目录都需要修改权限为777,防止报错
安装git权限管理器:
cd ~ # 回到git主文件夹下
git clone git://github.com/sitaramc/gitolite # 获取gitolite的源码
mkdir -p $HOME/bin # 为gitolite的二进制文件生成创建目录
gitolite/install -to $HOME/bin # 编译生成安装文件
$HOME/bin/gitolite setup -pk id_yubo.pub # 安装并初始化,指定id_yubo.pub公钥文件对应的用户为超级管理员
正常打印如下:
git@ubuntu:~$ $HOME/bin/gitolite setup -pk id_yubo.pub
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
WARNING: /home/git/.ssh missing; creating a new one
(this is normal on a brand new install)
WARNING: /home/git/.ssh/authorized_keys missing; creating a new one
(this is normal on a brand new install)
生成.ssh/authorized_keys文件,描述了管理员用户的公钥文件信息
3、克隆
客户端:
克隆权限管理代码
不加路径:git clone git@192.168.145.128:gitolite-admin.git
Cloning into 'gitolite-admin'...
git@192.168.145.128's password: 需要输入密码
fatal: 'gitolite-admin.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly 克隆失败
改为全路径:git clone git@192.168.145.128:/home/git/repositories/gitolite-admin.git
Cloning into 'gitolite-admin'...
git@192.168.145.128's password: 需要输入密码
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
Receiving objects: 100% (6/6), 742 bytes, done.
remote: Total 6 (delta 0), reused 0 (delta 0) 克隆成功
修改权限配置文件:gitolite-admin/conf/gitolite.conf
repo gitolite-admin
RW+ = id_yubo
repo testing
RW+ = @all
repo test_code
RW+ = @all
提交:
git add conf/gitolite.conf
git commit -m "add test_code for all user"
下载测试代码test_code: 成功
用户下载:
在用户目录下运行命令ssh-keygen生成文件.ssh/id_rsa.pub,
拷贝到/home/yubo.wang/tmp/gitolite-admin/keydir目录下
命名规则:id_xxxx.pub
去add并push上去然后就可以下载代码了
问题
1、克隆时需要输入全路径才能成功,原因未知,gitolite安装成功无异常打印提示,待解决。
2、克隆时需要输入密码,在.ssh/authorized_keys有描述管理员的公钥信息,不知为何还要输入密码,待解决。