gitolite3的安装
来源:互联网 发布:电子相册视频制作软件 编辑:程序博客网 时间:2024/05/05 04:24
环境:
redhat 5,192.168.1.217,服务端与客户端未分开安装(服务器端用户git、管理用户gitAdmin)
git 安装目录/home/git,gitolite必须也在该目录
mkdir /home/git
useradd -d /home/git git
passwd git
chown -R git.git /home/git
//注释:密码是git
2:安装gitolite
用git用户登陆
su - git
git clone git://github.com/sitaramc/gitolite
mkdir -p /home/git/bin
gitolite/install -to /home/git/bin
export PATH=/home/git/bin:$PATH
echo $PATH
3:生成公钥与私钥,使用gitAdmin为管理员帐号
su - root 切换到root用户
ssh-keygen -t rsa -f ~/.ssh/gitAdmin-C "root@xxxxx.com"
下面一直输入“回车”就可以,生成的公钥和私钥在~/.ssh/下面
4:生成gitolite管理公钥
把root.pub复制到git用户根目录/下
cp ~/.ssh/root.pub /home/git/gitAdmin.pub
注册公钥:
su - git
./bin/gitolite setup -pk ~/gitAdmin.pub
将会显示下面的初始化信息
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
5:测试
客户端测试秘钥是否可以成功访问,root下执行
使用秘钥登录:ssh git@192.168.1.217 -i ~/.ssh/gitAdmin普通登录:ssh git@192.168.1.217
返回如下内容:
hello <strong>gitAdmin</strong>, this is git@PBCS-IN-LIB running gitolite3 v3.6.2-4-g2471e18 on git 2.1.3R W<span style="white-space:pre"></span>gitolite-admin R W<span style="white-space:pre"></span>testing Connection to 127.0.0.1 closed.
6:配置SSH无密码登录
su - root
cd ~/.sshtouch config
SSH 的客户端配置文件 ~/.ssh/config 可以通过创建主机别名,在连接主机时,使用特定的公钥。【如果没有config文件,自己手动建立】
例如 ~/.ssh/config 文件中的下列配置:
host gitserver
user git
hostname 192.168.1.217
port 22
identityfile ~/.ssh/gitAdmin
直接使用server名称访问服务器
ssh gitserver
git clone gitserver:gitolite-admin.git
7:管理员clone管理库(此处为root用户)
cd ~
git clone gitserver:gitolite-admin.git
#pwd
/root/gitolite-admin
8:新增用户
cd ~/.sshlsssh-keygen -t rsa -f ~/.ssh/liu -C "lxm@mm203040.com"cp liu.pub /root/gitolite-admin/keydircd /root/gitolite-admin/keydir
添加用户公钥至git仓库
git add liu.pubgit commit -m "add user liu.pub"git push origin master
注意:通过修改clone后gitolite-admin的文件目录,再次把修改完成的文件推送到git服务器版本库中。
创建仓库
mkdir somegit.gitcd somegit.gitgit init --bare
8.配置权限
退到你的workstation上
exit
clone生成的gitolite-admin.git
git clone gitserver:gitolite-admin
注意这里用的是刚才准备好的server别名来连接的,其中最重要的区别是使用your-name.pub这个key,并且没有采用绝对路径来指定想要clone的repository,而是直接使用名称,并且这个名称也没有包括.git这个后缀。这一点很重要,因为这是用Gitolite的机制来clone,如果你跳过它直接使用git来,那么它的一些功能就无法实现了。以后clone, push其它需要受Gitolite权限控制的repository都必须这样做。 clone完后会有个新的目录gitolite-admin,里面有两个文件夹conf和keydir,第一个目录中包含的是配置文件,里面就是记录权限配置的地方,第二个目录中则包含所有用户的pub key。 现在我们打开配置文件,按照限配置需要进行设置
vim gitolite-admin/conf/gitolite.conf
权限配置在gitolite.conf中进行,注释用#表示。CC 代表创建。仅在 通配符版本库 授权时可以使用。用于指定谁可以创建和通配符匹配的版本库。R, RW, 和 RW+R 为只读。RW 为读写权限。RW+ 含义为除了具有读写外,还可以对 rewind 的提交强制 PUSH。RWC, RW+C只有当授权指令中定义了正则引用(正则表达式定义的分支、里程碑等),才可以使用该授权指令。其中 C 的含义是允许创建和正则引用匹配的引用(分支或里程碑等)。RWD, RW+D只有当授权指令中定义了正则引用(正则表达式定义的分支、里程碑等),才可以使用该授权指令。其中 D 的含义是允许删除和正则引用匹配的引用(分支或里程碑等)。RWCD, RW+CD只有当授权指令中定义了正则引用(正则表达式定义的分支、里程碑等),才可以使用该授权指令。其中 C 的含义是允许创建和正则引用匹配的引用(分支或里程碑等),D 的含义是允许删除和正则引用匹配的引用(分支或里程碑等)。- 是一条禁用指令。只对写操作起作用,即禁用用户的写操作。
配置如下,你也可以根据你的需要做更改
@repos_a proj1 proj2@repos_b proj3 proj4 proj5 @team_a user1 user2@team_b user3 user4 repo gitolite-adminRW+ = your-name repo @repos_aRW+ = @team_aR = @all repo @repos_bRW+ = @team_b
这个配置很简单,首先定义了两个repository group,再又定义了两个user group,group的好处就是以后添加repository和user的时候,不需要再单独配置,只需加入到对应的group中即可。
添加全新的repository,在上面提到的gitolite.conf文件中配置好对应的名称和权限,再push到server即可,server会自动帮你创建一个empty的bare repository。
如果你已经有一个repository,想把它加进来的话,那就把它拷贝到git server上的~/repositories文件夹里,记得文件夹名要以.git结尾,并且这个repository一定要是bare的,(你可以通过拷贝repository里的.git文件夹,然后运行git config --bool core.bare true,也可以运行git clone --bare your-repository来得到bare repository)。这种方式还有一个额外的操作就是在server上运行一次gitolite setup。
移除repository,在配置文件中移除对应的repo,然后push,接着再删除server上对应的文件夹即可。
添加user,把pub key拷贝到keydir文件夹里
删除user,一样,移除keydir里对应的pub key
注意,上面说的操作,都必须在clone的gitolite-admin里做更改,然后push,千万别在server上自己来,那样是没用的,因为这些权限配置、repository管理都有一些额外的操作,gitolite-admin会帮你搞定一切。 把你的更改push回server上,试试clone,pull,push,看看权限是否正确。
比如git clone git(ssh用户名称)@gitserver:proj3
如果ssh不是默认端口怎么办:
1.git remote set-url origin ssh://git@domain.com:3022/~/Projects/p1.git
2.修改配置文件 /root/.ssh
cat>~/.ssh/config# 映射一个别名host newdomainhostname 192.168.1.217port 3022identityfile ~/.ssh/testgit
参考 http://blog.chinaunix.net/uid-20671208-id-3494800.html
- gitolite3的安装
- [CI Architect] gitolite3的安装与配置
- Cygwin安装Gitolite3
- 网络安装服务器的安装
- 安装程序的静默安装
- ubuntu 的硬盘安装安装
- 安装linux环境的安装
- Eclipse的安装(软件安装,语言包安装,插件安装)
- Drupal的安装,汉化包的安装
- 虚拟机的安装和Linux的安装
- TestLink的安装过程 Mantis的安装
- floodlight的安装、OVS的安装、连通
- mysql的安装,卸载,hive的安装。
- R的安装与RStudio的安装
- zbar的安装,按照这个安装的
- networkx的安装 egg文件的安装
- eclipse的安装及jdk的安装
- Ubuntu14.04安装与安装后的软件的安装
- 解决coral模板的google font 问题
- Q7.1.1 把一个数组里的数的组合全部列出
- [补充一]3D视频
- Linux进程实时IO监控iotop命令详解
- [ACM] POJ 2689 Prime Distance (大区间素数筛选)
- gitolite3的安装
- sqoop导入mysql数据到hive中报错
- Review of Codeforces 5A and 5B(Python)
- Linux IO实时监控iostat命令详解
- 内核zImage的制作(initramfs)
- 鸡尾酒疗法
- PHP父类调用子类方法
- C/C++动态二维数组的内存分配和释放 .
- C++操作符重载