花了一天半的时间搭建git server,现在终于可以用了,主要用于解决几个奇葩问题。
首先介绍git server几个管理方式,这个链接中http://git-scm.com/book/en/的第四章有详细介绍。
我搭建的服务基于github的gitosis,搭建步骤这个链接http://git-scm.com/book/en/Git-on-the-Server-Gitosis,如果不出现异常,应该可以顺利通过的。
搭建出现的问题及解决方法:
一、新工程执行git push origin master时报错【ERROR:gitosis.serve.main:Repository read access denied】
解决方法:
这里排除gitosis.conf中的member用户名和keydir目录下public key名称不一致问题,我在配置时出现这个问题是由于在gitosis-admin.git中执行git push origin mast
忽略了错误【error:cannot run hooks/post-update:No such file or directory】造成的
因为gitosis是通过windows上传到linux的,所以repositories/gitosis-admin.git/hooks/post-update文件行中出现了非法字符‘^M’,通过sed -i 's/^M//g' post-update,
解决了这个问题(需要再执行git reset和git push)
二、增加新工程后对gitosis-admin.git不能在执行git push
解决方法:
由于gitosis-admin.git仓储管理员是linux-user2@linux-machine,对应的public key文件尾linux-user2@linux-machine.pub,在新工程中增加了用于linux-user2和
public key:linux-user2.pub,所以导致在gitosis-admin.git中执行git push命令是报【ERROR:gitosis.serve.main:Repository read access denied】
在新工程中不在增加linux-user2.pub即可。
新增git server能正常使用了,在搭建中出现了各种问题,总结一点:不能忽略任务提示信息,即使你的操作是hand-by-hand.