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服务搭建

相关推荐
星源~5 小时前
tree 命令集成到 Git Bash:可视化目录结构的指南
git·单片机·物联网·嵌入式·项目开发
zhaqonianzhu6 小时前
git gerrit安装钩子
git·gerrit
这是个栗子6 小时前
【问题解决】VSCode终端中看不到Git-Bash
ide·git·vscode
悲伤小伞6 小时前
linux_git的使用
linux·c语言·c++·git
天机️灵韵8 小时前
云效DevOps vs Gitee vs 自建GitLab的技术选型
git·开源项目
荔枝吻14 小时前
【AI总结】Git vs GitHub vs GitLab:深度解析三者联系与核心区别
人工智能·git·github
mrbone1115 小时前
Git-git worktree的使用
开发语言·c++·git·cmake·worktree·gitab
小哈龙16 小时前
裸仓库 + Git Bash 搭建 本地 Git 服务端与客户端
开发语言·git·bash
GISer_Jing1 天前
Git协作开发:feature分支、拉取最新并合并
大数据·git·elasticsearch
高山莫衣1 天前
git rebase多次触发冲突
大数据·git·elasticsearch