ubuntu下git服务器的简单配置

Ubuntu下Git服务器安装与配置
共设置3个角色,服务端,管理员,用户
服务器上多个用户可对应多个超级管理员,但一个用户只能对应一个超级管理员
1. 安装
1.1 安装Git-Core:


sudo apt-get install git-core 
1.2 安装 Gitosis


sudo apt-get install python-setuptools 
mkdir ~/src 
cd ~/src 
git clone git://eagain.net/gitosis 
  
cd gitosis 
sudo python setup.py install 
1.3 增加名为Git的用户
新加用户git,该用户将作为所有代码仓库和用户权限的管理
直接使用
sudo adduser --system --shell /bin/sh  --gecos 'git version control' --group --disabled-password --home /home/git git 生成git用户
或者: 
$ sudo useradd -m git


为git设置密码: 
$ sudo passwd git
都可以


1.4 上传公钥(如果没有,用 ssh-keygen -t rsa 生成)到Git服务器(此处为设置管理员账户)
本地客户端操作


scp .ssh/id_rsa.pub git@YOUR_SERVER:/home/git (YOUR_SERVER换成你服务器IP或域名)
会需要输入密码,输入超级用户密码即可
Git服务器操作
将管理员生成的pub拷入/home/git,执行
sudo -H -u git(此处是用户名,可替换) gitosis-init < /home/git(此处是用户名,可替换)/id_rsa.pub 
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update 
2. 配置
2.1 修改配置文件


git clone git(此处是用户名,可替换)@YOUR_SERVER:gitosis-admin.git 
成功后,在本地将有一个gitosis-admin目录,里面有gitosis.conf,keydir。
编辑gitosis.conf,如下:
[gitosis]


[group gitosis-admin] 
writable = gitosis-admin
members = volans




[group S9_pro] 
writable = S9_pro
members = volans kevin cindy jinhaize


[group S9_pro_ro] 
readonly = S9_pro
members = peng
这个配置文件表达了如下含义:gitosis-admin组成员有volans,该组对gitosis-admin仓库有读写权限;S9_pro组有 volans, kevin, cindy,jinhaize四个成员,改组对S9_pro仓库有读写权限; S9_pro_ro组有peng一个成员,对S9_pro仓库有只读权限。


将user生成的pub文件拷入到keydir目录下


当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。 
加入新文件、提交并push到git服务器
然后,在gitosis-admin目录下提交修改


git commit -a -m "created a new repository" 
git push origin master


2.2 新建Git项目


2.2.1管理员创建本地项目上传git服务器进行管理
mkdir test_pro 
cd test_pro 
git init
git remote add origin git@YOUR_SERVER:test_pro.git 
git add .
git commit -a -m "Init ***" 
git push origin master:refs/heads/master 


2.3 以后再有需要添加新的Git成员,只需
  1:拷入pub文件到keydir/ 
  2:修改gitosis.conf文件。
然后添加,提交,就可以了
git add keydir/***.pub
git commit -a -m "Granted *** commit rights to test_pro" 
git push




这样,其它成员就可以获取代码了
git clone git@YOUR_SERVER:android_project.git 


另外:如果你有一个现成的git仓库,想放到gitserver上供team使用(比如你clone了一个官方的kernel仓库,想在内部使用它作为基 础仓库),怎么办呢。 
首先需要从你的工作仓库中得到一个纯仓库, 比如你的工作目录为~/kernel, 你想导出纯仓库到你的优盘里,然后拷贝到gitserver上去。
$ git clone --bare ~/kernel /media/udisk
然后就拿着优盘,交给gitserver的管理员,让他拷贝到/home/git/下,同时需要配置gitosis相关配置文件哦,这个就不用再说了吧。 


比如:下载ALSA库:
git clone git://android.git.kernel.org/platform/external/alsa-lib.git
git clone git://android.git.kernel.org/platform/external/alsa-utils.git
生成bare库
git clone --bare alsa-lib alsa-lib.git
git clone --bare alsa-utils alsa-utils.git
 
将bare 库移动到git服务器目录
cp -r alsa-lib.git /home/repo
注意变更所有者,以获取提交权限。
sudo chown -R git alsa-lib.git
然后就Ok 了,呵呵.
在服务器上查看git用户权限配置信息进入/home/git,是有那个sudo cat .gitosis.conf 命令查看。


1.关于客户端需要输入服务器密码的解决
ssh-keygen 产生出 id_rsa, id_rsa.pub, 已经都放到正确位置(.ssh), 但是连接时却出现下述信息:


Agent admitted failure to sign using the key


解法
在自己的机器上, 执行 ssh-add, 会出现下述信息.


Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)


再次连接就正常咯。


2.公钥获得不了权限问题
a) 设置 git 的用户名
i. git config –global user.name “your name”
ii. git config –global user.email “your email”
iii. 为了好识别,请大家用中文名字的拼音,类似于我们的邮箱。
b) 设置 ssh 密钥
i. ssh-keygen –t rsa 则会生成如下文件~/.ssh/id_rsa.pub
ii. 将此文件改名为 yourname .pub à注意此文件名与上面的 user.name 的名
字是一样的。

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