测试环境:Ubuntu Server 18.04
1. 安装git-core
apt-get install git-core
2. 安装openssh
apt-get install openssh-server openssh-client
3. 安装 Gitosis
使用git之前需要先设置用户名和邮箱,如果已经设置请忽略:
git config --global user.name "your_name" git config --global user.email "your_e-mail"
下载源码:
git clone https://github.com/res0nat0r/gitosis.git
Gitosis 依赖于 Python库,先安装 setuptools 包,
注意:这里一定要使用 python2.x 的版本,否则后续 init 时会出现如下错误:
Traceback (most recent call last): File "/usr/local/bin/gitosis-init", line 11, in <module> load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-init')() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 480, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2693, in load_entry_point return ep.load() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2324, in load return self.resolve() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2330, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/usr/local/lib/python3.6/dist-packages/gitosis-0.2-py3.6.egg/gitosis/init.py", line 57 except OSError, e: ^ SyntaxError: invalid syntax
我的系统默认只安装了 python3.6 ,所以后面出现了上述问题,查了很多资料都没用,还是根据自己之前写python的经验发现的,如何修改系统默认的 python 版本
可以参考我的另一篇文章:
https://www.cnblogs.com/zoneofmine/p/13345827.html
确定默认版本使用的是python2.x后
安装 setuptools 包:
apt-get install python-setuptools
安装Gitosis:
cd gitosis/ python setup.py install
4. 创建 git 管理员用户(名字根据自己需求修改)
useradd -m git_admin -s /bin/bash passwd git_admin
增加sudo权限
vi /etc/group
在如下行新增自己的用户名,保存退出
sudo:x:27:git_admin
5. 生成公钥
先切换到git_admin用户,再执行
ssh-keygen -t rsa
直接回车的话默认创建在 /home/git_admin/.ssh/目录下,继续回车不创建密码(建议不要创建密码,否则以后使用每次都要输密码)
完成后会看到两个文件:
ls id_rsa id_rsa.pub
6. 用 git 管理员的公钥对 Gitosis 进行初始化
sudo cp /home/git_admin/.ssh/id_rsa.pub /tmp/ sudo -H -u git_admin gitosis-init < /tmp/id_rsa.pub
此时 home 目录下已经产生了 repositories 文件夹,里面有名为 gitosis-admin.git 的 git 库。
至此,Git 的搭建其实已经完成。
Gitosis其实就是通过 gitosis-admin.git 这个仓库来管理权限的,配置文件是 gitosis.conf,具体如下:
cat ~/repositories/gitosis-admin.git/gitosis.conf
[gitosis]
[group gitosis-admin]
members = git_admin@wayde
writable = gitosis-admin
git_admin用户对 gitosis-admin 具有写权限,即控制权限。
~/repositories/gitosis-admin.git/gitosis-export/keydir/ 存放的是所有客户端的公钥,公钥名字必须和配置文件中的member名字对应。
ls ~/repositories/gitosis-admin.git/gitosis-export/keydir/ git_admin@wayde.pub
7. 使用方法
首先可以在服务器上(或者拥有gitosis-admin用户的客户机上)clone gitosis-admin
git clone git_admin@wayde:gitosis-admin.git
此时你可以修改这个仓库,例如增加用户,增加项目等等,其实就是操作 gitosis.conf 并且 拷贝 public key,方法和上面相同,不再详细说明。
然后commit 并 push到服务器:
git add . git commit -m "Add test_project1" git push origin master
在服务器上配置完新项目后,客户机需要进行新增项目的话操作:
mkdir test_project1/ cd test_project1/ git init git add . git commit -m "Create test_project1" git push git_admin@wayde:test_project1.git master
此时新项目test_project1已经创建完毕。
Windows客户端同样可以clone和push,命令行的方式也可以使用Git Bash。