ubuntu安装git server经验总结

首先,根据http://www.cnblogs.com/xl19862005/archive/2011/06/28/2092464.html   来进行安装应该就可行的。

但是,后来在测试添加已有项目一步,把gitosis搞乱了,结果无论怎么弄都出错,无法clone。于是就总结出了一篇常见错误:

http://blog.csdn.net/xzongyuan/article/details/9332735


安装过程中很多疑问,在这里记录下来。

1.关于client和server

server:需要安装gitosis,openssh,它其实就是一个管理/home/git/authories_keys的工具,参考这篇gitosis浅析的文章可以大概了解什么是gitosishttp://geeklu.com/2012/10/gitosis/

client: 只需要安装git 和 openssh就行了。


2.gitosis需要验证密码吗?

git通过ssh验证用户,如果你的gitosis工作正常,是不需要验证密码的,但是我碰到了要求输入密码的问题,一直都没留意。所以,你要百度下ssh的两种验证方式。如果要求你输入密码,表示你的gitosis没有配置成功。我用gitoisis-init重新初始化,发现没有解决问题。因为gitosis.conf的内容没有改变,keydir下的文件没改变,/home/git/.ssh/authorized_keys也没变。所以,我把和gitosis有关的文件夹都删除,再重新gitosis-ini一下,就可以了。具体删除什么样的文件可以参照我上面的那个常见错误链接。


3.关于repositories路径问题

我们通常这样初始化:sudo -H -u git gitosis-init < /tmp/id_rsa.pub

这句话意思就是在用户git(对应-u)的Home(对应-H)下,利用/tmp/id_rsa.pub初始化。为啥要放在/tmp下?因为同一台计算机的不同用户都可以登录到/tmp下读写,而其它路径不是没有读的权限,就是没有写的权限,所以在/tmp下操作方便。

初始化后,你会在/home/git/.ssh下看到多了个authorized_keys,你可以看看id_rsa.pub的内容是否读进去了。如果错误,就会在你clone时要求你输入密码。

初始化 后,还会在/home/git/下生成文件夹

gitosis

repositories


另外还有一个隐藏文件

.gitosis.conf

你可以输入命令ll看下。它会指向repositories下的gitosis的版本仓库里的gitosis.conf。

为了方便,我们不会直接就gitosis-init,而是先这样作:

1.生成/home/repo这个目录,所有者为git,给予git可读写权限

2.然后输入命令ln -s /home/repo /home/git/repositories

注意,这里是建立一个软链接到/home/repo,即你点击/home/git/repositories后,就会进入/home/repo。这样用意就是:如果路径下已经有这个链接,gitosis就不会再创建,也不会覆盖它,而是直接就用它作版本仓库,这样,实际上的版本仓库就变成/home/repo了。以后你clone时,就是clone这个目录:

git clone git@:xxx.git。这是相对路径,一般配置正确是可以的。不行的话你就改为git clone git@:/home/repo/xxx.git。相信你配置错误的时候,会要求你输入密码。这时候,还是重新配置一下gitosis把。


4.认识git clone

经常看到git init,那么clone时候,需要git吗?

不需要,随便mkdir一个文件夹,就可以clone了。


5.认识gitosis-admin.git

毕竟刚安装gitosis的人,可能很多菜鸟,那么就会被gitosisi搞晕。

请记得gitosis的操作方法:在client端操作,而不是在server端(当然你也可以在server端操作)。它是一个版本仓库,是一个纯仓库,没有工作目录的。当然client端的gitosis.conf和keydir你都能在client找到,但是不要去动server端的,否则你client端的管理员想push,就会出错。

那么,只要你想加一个用户,加一个文件的权限等,你就要去client端,随便找个地方clone下来gitosis-admin.git这个仓库,然后修改,然后执行提交操作:

git add .

git commit -am "写入你希望的自定义log信息"

git push origin master


gitosis-admin的作用就是:管理员可以带着笔记本到处走,也可以不必保存这个仓库,即使笔记本格式化了也没问题。下次装好系统好,直接clone下server的那个gitosis-admin.git就可以获取最新的gitosis,然后修改,再push一下就行了,下次你觉得 某个修改不正确,还可以回滚一下;因为采用git管理,还可以多个管理员共同管理,使用不同的branch去修改server端等。认识了这个作用,就不必质疑它为啥那么麻烦了。



6.关于client端和server端的版本仓库的权限问题

你不必担心权限问题,不要自己去chmod或者chown 仓库的文件。client端提交更改后,server端自动会把更改的权限和拥有者改为server端的git。


7.认识SSH

不要忘记,你clone时候用的是ssh加密,所以,如果你出现了任何认证问题,不是gitosis.conf写错,就是ssh加密的密钥对过时,要删除重新认证。


你可能感兴趣的:(git,gitosis)