在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时托管自己的专用存储库,那么这篇文章就是一个先决条件,这就是我们下一步看的内容。