跳转到内容

Git/Gitosis

来自维基教科书,开放世界中的开放书籍
< Git

Gitosis 是一种工具,用于保护集中式的 Git 仓库,允许多个维护者同时管理同一个项目,通过限制对只通过安全网络协议的访问来实现。

安装 Gitosis

[编辑 | 编辑源代码]

签出 Gitosis 仓库

[编辑 | 编辑源代码]

要安装 Gitosis,您首先必须安装 Git 客户端。安装完成后,从其仓库签出一个 Gitosis 的副本

 git clone git://eagain.net/gitosis.git

安装

 cd gitosis
 python setup.py install

创建一个用户来管理仓库

[编辑 | 编辑源代码]

创建一个用户来管理仓库

 sudo adduser \
   --system \
   --shell /bin/sh \
   --gecos 'git version control' \
   --group \
   --disabled-password \
   --home /home/git \
   git

如果您还没有公钥,请在您的本地计算机上创建一个

 ssh-keygen -t rsa

将您的公钥复制到 Gitosis 服务器

[编辑 | 编辑源代码]

将此密钥复制到 Gitosis 服务器。假设您在您的主目录中

 scp .ssh/id_rsa.pub [email protected]:/tmp

设置 Gitosis

[编辑 | 编辑源代码]

初始化 Gitosis

[编辑 | 编辑源代码]

初始化 Gitosis

 sudo -H -u git gitosis-init < /tmp/id_rsa.pub

成功后,您将看到

 Initialized empty Git repository in ./
 Initialized empty Git repository in ./

确保 Git post-update hook 具有正确的权限

 sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update


配置 Gitosis

[编辑 | 编辑源代码]

克隆 Gitosis 仓库

[编辑 | 编辑源代码]

Gitosis 创建了它自己的 Git 仓库。要配置 Gitosis,您需要克隆这个仓库,设置您的配置选项,然后将您的配置推送到 Gitosis 服务器。

克隆 Gitosis 仓库

 git clone [email protected]:gitosis-admin.git
 cd gitosis-admin

创建仓库

[编辑 | 编辑源代码]

编辑 gitosis.conf

一个默认 gitosis.conf 的示例

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

定义组、成员、权限和仓库

[编辑 | 编辑源代码]

您可以像这样定义成员组以及他们对仓库的权限

 [group blue_team]
 members = john martin stephen
 writable = tea_timer coffee_maker

在这个例子中,blue_team 组中的任何成员,在本例中是 john、martin 和 stephen,都将可以写入 tea_timercoffee_maker Git 仓库

保存、提交并推送此文件。

 git commit -am "Give john, martin, and stephen access to the repositories tea_timer and coffee_maker."
 git push

创建仓库

[编辑 | 编辑源代码]

接下来,创建一个仓库。您需要先切换到您要存储 Git 仓库本地副本的目录。

创建仓库

 mkdir tea_timer
 cd tea_timer
 git init
 git remote add origin [email protected]:tea_timer.git
 # Add some files and commit.
 git push origin master:refs/heads/master
 # The previous line links your local branch master to the remote branch master so you can automatically fetch and merge with git pull.

将用户添加到仓库

[编辑 | 编辑源代码]

用户通过他们的公钥来标识。Gitosis 将这些密钥保存在 gitosis-admin 仓库的 keydir 目录中。用户通过密钥文件的名称与其 Git 用户名相关联。例如,将一个 RSA 密钥添加到 keydir/john.pub 将会将用户 john 与 john.pub 中定义的机器相关联。密钥必须以 .pub 结尾!

添加用户

 cd gitosis-admin
 cp /path/to/rsa/key/john.pub keydir/
 git add keydir/*
 git commit -am "Adding the john account."
 git push

John 现在可以克隆他可以访问的 Git 仓库,这些仓库由 gitosis.conf 定义。在本例中,他可以读取和写入仓库,因为他拥有 writable 权限。

[编辑 | 编辑源代码]
华夏公益教科书