Ubuntu Git Server 搭建(Gitosis)

测试环境: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。

原文地址:https://www.cnblogs.com/zoneofmine/p/13754761.html