gitosis主要用来管理权限。即通过公钥来管理。
安装内容,见参考资料第一个连接,参照一直做到第8步骤。
前8步骤都是完美的。
我只做补充:
补充1、git clone git@hostname:用户名/gitosis-admin.git //这句话,@前面的git,是你第4步的git服务器管理用户,hostname,可以是当前服务器ip地址,或ip地址对于的服务器名称。因为我git中央服务器是搭建在本机,所以hostname是localhost。“用户名”不用写,删掉。
补充2、第8步,修改gitosis.conf,是在本地git,不是git中央服务器。git中央服务器是与你用户根目录同层级的,且所属是git用户(即第四部的git服务器管理用户)。
所以修改完gitosis.conf后需要git add . (后面加“.”,表示添加全部),git commit -am "add 某个用户",git push (order master 可以不写)。
补充3、这段建新库的。没验证,与下面”有意思的方法“相似,但我估计要先建mkdir helloworld.git
git init git add . git commit -am "add helloworld project" git remote add origin ssh://git@hostname/helloworld.git //没验证,貌似还是需要先在/home/git/repositories下建mkdir helloworld.git git push origin master
二、建库的两种方法:实践检验
No 1、老老实实的方法:
ssh 进入git server服务器 --> cd /home/git/repositories下 --> su git(切换到git管理员账户) --> mkdir ordermanage.git-->cd ordermanage.git --> git init --bare
--> 切换回su liang -->回到本地,改gitosis-admin下的gitosis.conf,用法见参考资料第一个连接--> 拷贝公钥到keydir目录下,确保公钥文件名
与gitosis.conf中的member名一致(去掉.pub)-->git add . ,git commit -m "add new project" ,git push(容易忘) -------->选择目录, git clone git@10.33.41.23:ordermanage.git //ip为git服务器地址
-->往里面塞内容 --> 再add commit push --> ok!!!。
No 2、有意思的方法:
从上面红箭头开始的地方,改变! 因为往往我们项目已经建成,需要放到git server服务器上,按上面做得先改名,复制粘贴各种麻烦。
now ,follow me --> 前面git server上建项目过程和公钥添加都相同(新项目名Contacts.git)--------> 在本地已有项目文件夹中,git init --> git add . -->
git commit -am "add existed project" --> git remote add origin git@10.33.41.23:Contacts.git //添加远程关联,关键! --> git push origin master
--> ok !!!。 //origin master必须要有
备注:
1 / 如果git remote add origin,不小心加错了,可以git remote rm origin删除后再加。
2 / 如果上面那句“加粗”的话忘了执行,会报:ERROR:gitosis.serve.main:Repository read access denied
3 / fatal: '*****.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
这种报错,大多由于没有将本地gitosis-admin,提交并push到中央服务器。可以进入git中央服务器,查看中央服务器中的gitosis-admin中有没有新用户公钥。
4 / gitosis-admin是一种管理git中用户验证的库,本身也作为库的形式来管理,所以,你会在git用户主目录下的repositories下,可以看到gitosis-admin.git项目。
如果 git clone被拒绝:
方案:检查gitosis-admin下的配置文件,sudo vim gitosis.conf --> 查看项目组名下,member名是否和keydir下的公钥文件名相同,记得要去掉.pub。
参考资料:
http://wiki.ubuntu.org.cn/index.php?title=Git%E6%9C%8D%E5%8A%A1%E5%99%A8Gitosis%E5%AE%89%E8%A3%85%E8%AE%BE%E7%BD%AE&variant=zh-hans //非常棒,ubuntu中文官网,我的最爱http://wiki.ubuntu.org.cn/