git服务搭建

纯git server

软件安装

环境:ubuntu16.0.4

  1. 安装Git-Core:sudo apt-get install python-setuptools

  2. 安装openssh-server和openssh-client:sudo apt-get install openssh-server openssh-client

  3. 安装python tool:sudo apt-get install python-setuptools

  4. 安装gitosis:

    git clone https://github.com/res0nat0r/gitosis.git

    cd gitosis/

    sudo python setup.py install

添加管理账号
sudo adduser \
    --system \
    --shell /bin/sh \
    --gecos 'git version control' \
    --group \
    --disabled-password \
    --home /home/git \
    git

如果已有git账户,可以替换成gitmanager

创建链接映射

由于gitosis默认状态下会将仓库放在用户的repositories目录下,例如gitmanager用户的仓库地址默认在

/home/gitmanager/repositories/目录下,这里我们需要创建一个链接映射。让他指向我们前面创建的专门用于存放项目的仓库目录/home/gitrepository。

sudo ln -s /home/gitrepository /home/gitmanager/repositories
初始化管理用户
  1. 拷贝管理用户公钥到/tmp/下,如:

    scp ~/.ssh/id_rsa.pub gitmanager@192.168.0.68:/tmp/

  2. 使用拷贝来的公钥初始化gitosis:

    sudo -H -u gitmanager gitosis-init < /tmp/id_ras.pub
    sudo chmod 755 /home/gitmanager/repositories/gitosis-admin.git/hooks/post-update

配置账号
  1. 验证ssh

    ssh gitmanager@192.168.0.68
    TY allocation request failed on channel 0
    ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.
    Connection to gitserver closed.

说明 Gitosis 认出了该用户的身份,但由于没有运行任何 Git 命令,所以它切断了连接。

  1. 克隆gitosis管理仓库:

    git clone gitmanager@192.168.0.68:gitosis-admin.git

这会得到一个名为 gitosis-admin 的工作目录,主要由两部分组成:

./gitosis.conf
./keydir

gitosis.conf 文件是用来设置用户、仓库和权限的控制文件。keydir 目录则是保存所有具有访问权限用户公钥的地方--- 每人一个。在 keydir 里的文件名(比如上面的 qingkouwei.pub) 会自动从使用 gitosis-init 脚本导入的公钥尾部的描述中获取该名字。

看一下 gitosis.conf 文件的内容,它应该只包含与刚刚克隆的 gitosis-admin 相关的信息:

[gitosis]

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

要创建项目demo,在里面加入:

[group demo]
members = qingkouwei
writable = demo

要为demo项目添加用户user1:

[group demo]
members = qingkouwei user1
writable = demo

并将用户user1的公钥计入到keydir,并且公钥名.pub和members里面的名字对应.

要添加对demo项目只读的用户:

[group demo]
members = qingkouwei user1
writable = demo

[group demo]
members = user2
readonly = demo

修改完配置文件和keydir,使用git push到gitosis-admin服务器.即可直接git add remote add suervename gitmanager@192.168.0.68:demo.git,然后直接将本地目录推送到demo仓库,不需要再服务器手动创建demo仓库,gitosis会帮忙自动创建.

常见问题
  1. ERROR:gitosis.serve.main:Repository read access denied
    原因:
    gitosis.conf中的members与keydir中的用户名不一致,如gitosis中的members = foo@bar,但keydir中的公密名却叫foo.pub

解决方法:

使keydir的名称与gitosis中members所指的名称一致。 改为members = foo 或 公密名称改为foo@bar.pub

  1. clone时报does not appear to be a git repository

原因:

clone时不能用绝对路径,直接写gitosis-admin.git即可.

参考:https://git-scm.com/book/zh/v1/服务器上的-Git-Gitosis

gitlab服务搭建

相关推荐
研究是为了理解4 小时前
Git Bash 常用命令
git·elasticsearch·bash
DKPT5 小时前
Git 的基本概念和使用方式
git
Winston Wood8 小时前
一文了解git TAG
git·版本控制
喵喵先森8 小时前
Git 的基本概念和使用方式
git·源代码管理
xianwu54310 小时前
反向代理模块
linux·开发语言·网络·git
binishuaio12 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。13 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
stewie614 小时前
在IDEA中使用Git
java·git
晓理紫1 天前
使用git lfs向huggingface提交较大的数据或者权重
git
我不是程序猿儿1 天前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git