树莓派论坛

 找回密码
 立即注册

为Pi安装Gitolite——使其成为Git版本控制服务器

turnip_gray 发表于 2013-7-1 01:22:37 | 显示全部楼层 |阅读模式
之前U版和codemonkey发了SVN的……
http://www.shumeipai.net/thread-14250-1-1.html
http://www.shumeipai.net/thread-8538-1-1.html

再来发个Git的好了。

优势:
1.流行,这几年分布式的比较潮(当然过两年会不会回归集中式没谱了,就像前几年老提倡要UML,这两年也没人提了)
2.在Pi上配置相对简单
3.使用Gitolite的话,基于是SSH协议传输的。所以只要服务器有开SSH协议,就够了。不需要开机启动额外的服务。

准备:
一,客户端(假设家里常用的机器是Win,Linux和MAC的相对简单,略)
装msysgit(干嘛用的以及去哪下自行解决。如果没有头绪的话,大概应该平时也用不着Git,可以不用往下看了)
装乌龟(TortoiseGit,别忘了装简中的包,如果习惯了checkout、clone神马的,变成中文之后,反而会对不上号,就别装了- -!)
安装没有先后顺序,都装上就行。
安装时候也不用特意改设置,全部默认设置下一步就可以(安装路径可以写自己喜欢的,其他设置安装完以后再配置也来得及)
开我的电脑(XP下,Win7下叫计算机),随便进的路径(比如F:/Git),右键,选TortoiseGit(T)>设置>常规设置>MsysGit>Git.exe路径:这里填上刚才msysgit的安装路径\bin(一般会自己找到)
再去网络选项卡下,看SSH客户端那栏,这里要填乌龟安装目录下面的那个TortoisePLink的路径(如果设置成MysysGit带的SSH.exe还有putty神马的,一会你用乌龟Shell的时候没法输入私钥)
客户端准备完毕

二,PI上
装raspbian(建议装这个,装最新的‘13.5.25的就行)
不建议装Pidora(以前的Fedora remix,因为一会为了偷懒要用到Samba,Pidora里面的Samba的版本是4,配置比较诡异,反正我折腾了2天也没配好——据说Fedora 18里面自带的Samba4是不带AD的。网上大部分介绍帖子也都是针对3X的。就算有针对4X的也都是基于源码编译,然后用samba-tools弄dns服务器,ad、dc神马一大堆的。这些教程Pidora上根本不适用)
装samba(这个就不写了,很简单,就是为了一会往pi上传个文件偷懒用的,如果有别的方法上传文件的话,完全可以忽略这步)
装gitolite:sudo apt-get install gitolite
如果用的不是最新的raspbian的话,可能还得先装git,最新版出来就已经自带git了,貌似。

新建用户  sudo useradd -m git
不喜欢叫git的话也行

设个密码sudo passwd git
加入user组,sudo usermod -a users git
用git登录

配置:
一,生成密钥
在Win下,乌龟的安装目录里找到puttygen打开,选generate,然后动鼠标等着密钥生成(这个私钥生成之后是putty格式的,如果设置了密码的话,不能随便改动,改动之后会不能用)。
选save public key,比如叫admin.pub
选save private key,比如叫admin.ppk
这个留着当管理员用
再生成一个叫user.pub和user.ppk(这个平时用)
在pi上,输入ssh-keygen 然后输入一个路径比如/home/git/dev
把生成的两个文件(dev和dev.pub弄回到win下)
这个用来给一些IDE提交时候用(因为有些IDE不认putty格式的私钥,当然其实自己也能修改文件,不过如果设置了密码就不行了)
二,修改公钥
把win下生成的那两个公钥传到pi上去(用ssh也好,ftp神马的也好,随便)
然后保险起见修改权限sudo chmod 777 admin.pub
sudo chmod 777 user.pub
然后ssh-keygen -i两次
分别输入admin.pub和user.pub的路径,用输出出来的字符串,替换这两文件里面的内容(可以用管道自动写进去,或者抄下来用nano编辑进去)
这样就把putty格式的公钥,改成gitolite能够识别的格式了。
把user.pub弄回到win下。把admin.pub保存到某目录下,比如/home/git/admin.pub
三,让gitolite自动配置
pi上输入gl-setup /home/get/admin.pub(刚才admin.pub保存的目录)
四,从客户端配置gitolite
从pi上克隆出gitolite的配置程序
win下任意目录点右键,选git克隆,url填“git@pi的ip地址:gitolite-admin”,勾选加载putty密钥然后地址写那个admin.ppk的路径
点确定,如果你私钥设置了密码,会弹出密码输入框让你输入密码。
等克隆完成后,打开gitolite-admin\keydir目录,把user.pub和dev.pub复制进去,并且右键TortoiseGit(T)>增加
编辑"gitolite-admin\conf\gitolite.conf"里面的内容
@admin = admin
@users = user dev @admin
repo    gitolite-admin
        RW+     =   @admin
repo    testing
        RW+     =   @all
repo    XXX
       RW        =   @users
其中,XXX是你要在服务器端建立的git库的库名。
RW后面的+是说允许强制提交(显然是不能允许啊)
gitolite-admin是配置文件库,应该只让配置人员有权限。
保存之后,提交,然后推到pi上去。设置就会生效。
以后每次需要建新库,增加用户(把公钥放在keydir目录里,并且在配置文件里添加权限)神马的,只要修改这个库,并且用admin的私钥来同步这个这个库到pi上就好。

平时用的话,如果是用乌龟,可以用user那个私钥。
有些不认putty私钥的IDE,可以用DEV那个私钥来提交,克隆
至此,git服务器建立完成。



turnip_gray  楼主| 发表于 2013-7-1 09:43:38 | 显示全部楼层
呃……修改个错误,之前说在pi上生成dev用户的密钥这个错了,密钥这东西和机器是对应的,pi上生成的密钥,只能在pi上用。
所以如果想生成一个win下IDE用的非putty格式的密钥,要用msysgit在win下生成:
win+r、cmd开命令提示符
cd到"msysgit的安装目录\bin“
输入ssh-keygen
输入文件保存路径和文件名,比如直接叫dev,就会保存在当前目录下,叫dev
然后如果想用的话,可以输入密码

之后,只要把dev留下,dev.pub复制到gitolite-admin\keydir下,然后替换、提交、推送到Pi上就行了。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )