Loading

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 

posted @ 2020-11-03 19:13  stono  阅读(262)  评论(0编辑  收藏  举报