博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为git服务器配置gitosis管理权限
阅读量:7286 次
发布时间:2019-06-30

本文共 2660 字,大约阅读时间需要 8 分钟。

yum install python-setuptoolsgit clone https://github.com/tv42/gitosis.gitcd gitosissudo python setup.py installln -s /opt/git /home/git/repositories #gitosis默认仓库文件位于/home/git/下面,/opt/git是我们的仓库文件位置,所以我们可以直接创建一个连接mv /home/git/.ssh/authorized_keys /home/git/.ssh/ak.bak   #因为gitosis会管理用户公钥,所以我们直接mv掉秘钥配置文件也可以#至于git用户的shell改不改无所谓sudo -H -u git gitosis-init < /home/git/.ssh/id_dsa.pub  #代替authorized_keys进行管理 #报错的话就需要修改权限chown -R git:git /home/git因为新建的链接所属用户为root,仓库/opt/git的所属用户也需要修改为git用户chmod 755 /opt/git/gitosis-admin.git/hooks/post-update    #修改权限git clone git@ip:gitosis-admin.git        #在windows上执行,正常的话这里不需要输入密码,执行完后会在本地有一个gitosis-admin文件夹,在里面有几个文件,如果报错,就改成绝对路径#找到gitosis.conf并进行修改,添加以下内容。注意这个如果报错的话就再试试绝对路径[group mobile]members = git    #git是用户名,我直接使用的是git@localhost.localdomain否则会报错writable = phone  #这个相当于仓库名执行git commit -am 'add iphone_project and mobile group'git remote add origin git@gitserver:phone.git    #我这里会报远程库已存在,执行git remote rm origin删除远程库再次执行即可。而且这里不能使用绝对路径,直接:项目名即可git push origin master    如果git push origin master 报错,提示没有权限或者不是git仓库时可以尝试以下方法,我的设置之后就正常了 可能就还需要在git服务器上的本地gitosis-admin.git(setup.py时安装的仓库位置那里指定的路径)里面修改gitosis.conf添加以下跟上面相同的内容
[group mobile]members = git    #git是用户名,我直接使用的是git@localhost.localdomain否则会报错writable = phone  #这个相当于仓库名
如果还是报错,可以尝试配置使用秘钥登录 增加gitosis-admin.git权限

 按照以上方式添加git仓库后,并往新仓库添加文件更新到仓库,再次操作gitosis-admin会报以下错误

$ git push origin master

To 172.16.1.116:phone.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@172.16.1.116:phone.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

执行git pull origin master将仓库更新到最新即可

 

我再次试着把git用户对phone的权限改为只读,然后在服务器上先执行git pull origin master然后再次git push origin master。意思是先将远程更新更新本地仓库再提交本地仓库的更新

然后在Windows下用git用户的phone仓库下试着git push会报错。再次修改回写的权限后,在Windows本地的phone仓库里也要先git pull将远程更新更新到本地

 

 

 

现在我们来模拟正常使用情况:

  项目组需要新增一个项目,所以我们先在仓库位置/opt/git位置新建一个aa.git然后cd aa.git执行git init初始化一个空仓库

  如果不先初始化,会出现一个很奇怪的情况,下面的xiaomiproject是我不手动初始化aa.git,让gitosis-admin自动创建的仓库,可以发现,多了配置文件,也就是说开发人员也可以修改项目配置文件了

 

  最好再把aa.git 所有者改为git用户和git用户组

  然后在Windows下面的gitosis-admin下面进行修改gitosis.conf文件添加以下内容

[group aa]members = git@localhost.localdomainwritable = aa

  然后git commit -am 'set aa '

  添加远程git remote add origin git@ip:gitosis-admin.git

  接着执行git push origin master

  正常的话效果如下

  

 

 注意:一定要记得使用git push ,git pull, git push origin master ,git pull origin master,特别是当gitosis-admin的gitosis.config改变时

转载于:https://www.cnblogs.com/biaopei/p/9353349.html

你可能感兴趣的文章
TCP/IP、Http、Socket的区别
查看>>
我的友情链接
查看>>
request.getParameterValues("ic")
查看>>
我的友情链接
查看>>
AJAX的post提交数组数据
查看>>
项目在eclipse运行正常,但单独部署到tomcat上出现乱码解决办法
查看>>
【数据库】转换成3NF的保持函数依赖的分解
查看>>
日期工具类
查看>>
apache关闭文件索引
查看>>
通过HCIE的秘诀~来自一位老司机的常规PASS之路
查看>>
iptables详解总结+常用案例
查看>>
jQuery插件构成基础知识
查看>>
mysql主上不写bin-log文件
查看>>
git 简单使用
查看>>
RHEL5 部署NIS服务器
查看>>
iOS 9 https的问题
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
本地 eclipse 使用 tomcat 发布的项目地址
查看>>
JVM——头脑简单的阿拉丁神灯
查看>>