gitolite离线安装
1,概念说明
需要区分gitolite服务器、gitolite管理员、gitolite普通用户三者的区别;
gitolite服务器是git服务器,gitolite管理员与git服务器可以是两个服务器,gitolite管理员是第一个git用户;
所有的git用户的添加等操作必须是gitolite管理员使用git操作进行添加;就是git add/commit/push;
2,文件下载
找一个可以上网的机器,执行命令:
git clone git://github.com/sitaramc/gitolite
下载后把这个文件夹上传到需要安装gitolite的服务器上面;
必须使用这种方式,因为安装的时候需要查找gitolite/.git文件夹;
如果没有.git文件夹,进行安装的时候会出现如下错误:
git describe failed; cannot deduce version number
3,gitolite安装
添加操作系统用户git
adduser git
把gitolite管理员的公钥上传到/home/git下面,假设名字为git_admin.pub;
使用git用户进行gitolite安装
mkdir bin # 创建bin目录用于安装gitolite
./gitolite/install -to ~/bin # 进行gitolite安装
~/bin/gitolite setup -pk ~/git_admin.pub # 这是进行git环境初始化的过程;
通过setup,会创建~/.gitolite文件夹,这里面有config和key;
还会创建repositories文件夹,里面会放仓库;还有projects.list,存放仓库名称;
4,gitolite管理员初始化
git clone git@IP地址:gitolite-admin.git
此命令是在gitolite管理员的环境下执行的,由于使用了git_admin.pub进行了初始化,所以
这种情况下是可以clone下来的,会在当前目录生成gitolite-admin文件夹,这里面有
conf/gitolite.conf文件(记录各个用户权限) 和 keydir文件夹(存储各个用户公钥);
gitolite管理员进行添加之后,必须使用git add/commit/push操作进行权限设置生效;
如果在conf/gitolite.conf文件中将管理员的权限删掉,而且还上传了到了服务器,
下一次就无法进行管理了,可以在git服务端进行如下操作:
把.gitolite/conf/gitolite.conf中的内容修改回来
使用命令gitolite compile进行恢复;
仓库权限设置的时候,可以设置某一个目录为可以创建,这样就可以在指定目录下面
进行自己仓库的创建;配置文件大致为:
repo location/.+$
RW+ = user01
C = user01
其中C为创建权限,有了创建权限用户在本地可以使用git clone git-server:localtion/repo01.git
进行远程仓库的创建;
5,添加普通gitolite用户
对于普通用户生成公钥私钥
ssh-keygen -t rsa
生成之后需要把user.pub公钥交给gitolite管理员,由管理员进行配置;
在conf/gitolite.conf文件中填写用户名user01,把用户的公钥文件user01.put方总keydir文件夹下面;
然后git add/commit/push
6,普通用户git操作
配置.ssh/config文件,
host git-server user user01 hostname 192.168.0.111 port 22 identityfile ~/.ssh/user01
这样进行git clone git-server:/folder/xxx 的时候就可以使用.ssh/user01私钥进行认证;
7,程序的方式进行git读取
如果一个操作系统有git命令,是可以使用操作系统用户进行git操作;
git clone user01@192.168.1.111:/home/user01/abc.git
在系统提示输入密码的时候输入密码;
注意这里使用的是user01的用户名密码,必须保证user01对/home/user01/abc.git的访问权限;
另外,/home/user01/abc.git可以是gitolite创建的repository中的文件夹,
也可以是把repository中的文件夹拷贝出来,放到别的地方,只要访问权限足够就使用git clone进行下载;
8,公钥私钥生成方式
ssh-keygen -t rsa -f filename
可以生成以filename命名的公钥私钥,存储于~/.ssh文件夹;
9,参考资料
https://www.worldhello.net/gotgit/05-git-server/040-gitolite.html