在Ubuntu上设置Gitosis

在Ubuntu上设置Gitosis

概述

本文是两部分系列的第一部分,其中包括使用gitosis为您的中央存储库设置托管服务器,并在下一篇文章中,使用现有的SVN存储库并运行必要的脚本和命令将其迁移到某种git与...合作

所以这篇文章是如何设置和管理一个git仓库。 有一些伟大的服务 ,在这里可以做到这一点,但为什么要付钱为你可以轻松地做免费的东西? 本文介绍如何设置和管理人们可以用作中央共享点的安全和私有的git仓库。

设置Gitosis

Gitosis是用于托管git存储库的工具。 其常见用途是中央存储库,其他开发人员可以将更改推送到共享。

首先克隆gitosis存储库并运行基本的python安装。 你只需要python setuptools包

sudo apt-get install python-setuptools

然后你可以很容易地安装它:

git clone git://eagain.net/gitosis.git
cd gitosis
sudo python setup.py install

接下来,您需要创建一个拥有要管理的存储库的用户。 你可以把它的主目录放在任何你想要的地方,但在这个例子中,我们把它放在标准的/ home的位置。

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

然后,您必须为第一个存储库用户创建一个ssh公钥(或使用现有的密钥)。 我们将使用init命令将其复制到服务器并加载它。 如果你没有公钥,你可以像这样创建一个ssh-keygen

ssh-keygen -t dsa

那么gitosis-init只是第一次加载你的用户密钥,就像这样:

sudo -H -u git gitosis-init < ~/.ssh/id_dsa.pub

在这里,确保您的更新后挂钩具有执行权限不会受伤。

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

现在您可以克隆用于管理我们的存储库权限的gitosis-admin存储库。

git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git
cd gitosis-admin

现在你可以看到你有一个gitosis.conf文件和一个keydir目录

$ ls -l
total 8
-rw-r--r-- 1 jgoulah mygroup 83 2009-10-31 20:44 gitosis.conf
drwxr-xr-x 2 jgoulah mygroup 4096 2009-10-31 20:44 keydir

gitosis.conf文件保存您的存储库的组和权限信息, keydir文件夹保存您的公钥。

如果我看到我看到我的公钥是从我们早期的gitosis-init命令导入的:

$ ls -l keydir/
total 4
-rw-r--r-- 1 jgoulah mygroup 603 2009-10-31 20:44 jgoulah.pub

所以打开gitosis.conf ,你应该已经看到你有一个我们刚刚克隆的gitosis-admin存储库的条目。 上面的gitosis-init命令设置了对我们的访问。 从现在开始,我们可以打开gitosis.conf,并编辑权限,提交并推回到我们的中央存储库。

如果我想为一个名为pizza_maker的资源库创建一个新项目,它将看起来像这样。

[group myteam]
members = jgoulah
writable = pizza_maker

不要忘记成员部分是最后没有.pub的公钥文件的名称。 如果您的密钥命名为XYZ.pub,那么您的成员行将在此处显示XYC。

git commit -a -m "Create new repo permissions for pizza_maker project"
git push

作为提醒,本系列的第二部分将显示一个svn进入git。 现在让我们假设我们从零开始。 我们将像这样创建我们的项目:

cd && mkdir pizza_maker
cd pizza_maker
git init
git remote add origin git@YOUR_SERVER_HOSTNAME:pizza_maker.git
git add *
git commit -m "some stuff"
git push origin master:refs/heads/master

唯一需要知道的是如果您要授予另一个用户访问您的存储库。 所有您需要做的是将其公钥添加到keydir文件夹,然后通过修改gitosis.conf给用户权限

cd gitosis-admin
cp ~/otherdude.pub keydir/
 
[group myteam]
- members = jgoulah
+ members = jgoulah otherdude
  writable = pizza_maker

如果需要,您还可以通过git://协议授予公共访问权限:

sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all

那么有人可以克隆:

git clone git://YOUR_SERVER_HOSTNAME/pizza_maker.git

结论

本文介绍了如何设置gitosis,如何初始化您的gitosis-admin存储库,这是一个独特的概念本身,用于使用存储库来管理存储库,并且工作得很好。 我们还介绍了如何创建我们自己的新Git存储库,以及如何通过gitosis.conf来管理访问权限。 本系列的第二部分将介绍如何从当前的SVN设置到Git设置。 如果您希望在从SVN转换为Git时托管自己的专用存储库,那么这篇文章就是一个先决条件,这就是我们下一步看的内容。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏