MAC下搭建配置Git服务器

来源:互联网 发布:倒放的视频软件 编辑:程序博客网 时间:2024/06/06 00:28

XCode 默认支持 Git 作为代码仓库,当我们新建一个仓库的时候,可以勾选创建默认及使用配置,总体思路是:使用 gitosis 来简化创建过程,在用作服务器的机器上创建一个名为 gitserver 的账户来创建 git 本地服务器,其他客户端通过 ssh 机制访问 git 服务器。

一,创建新用户
1,在用作服务器的 Server机器 上创建 gitserver账户。我们可以通过 System Preferences->accounts 来添加。在这里我添加一个 gitserver 的 administrator 账户,administrator 不是必须的,在这里仅仅为了方便。
或者通过命令:

sudo adduser \    --system \    --shell /bin/sh \    --gecos 'git version control' \    --group \    --disabled-password \    --home /srv/example.com/git \    gitserver

2,设置远程访问
logout 当前账户,使用 gitserver 账户登录;在 System Preferences->Sharing 中,勾选:Web Sharing 和 Remote Logig。即远程登录和文件共享。

二,下载安装 gitosis
1,下载安装gitosis
通过以下命令行下载,或者在github上直接下载。

git clone git://eagain.net/gitosis

安装

python setup.py install

三,制作SSH公钥
1,回到 client 机器上,制作 ssh 公钥,放置到gitserver的 /tmp 目录下。使用以下命令。

bash-3.2$ cd ~bash-3.2$ ssh-keygen -t rsabash-3.2$ cd .sshbash-3.2$ lsid_rsa        id_rsa.pubbash-3.2$ cp id_rsa.pub /tmp/yourame.pub

进入到 local 账户的 home 目录,使用 ssh-keygen -t rsa 生成 id_rsa.pub,最后将该文件拷贝放置到 /tmp/yourname.pub,这样 gitserver 账户就可以访问 yourname.pub了,注意,此处一定要将公钥的名字改成和yourname.pub中的最后一句相同,比如我的文件中最后一句是yinli@localhost ,因此公钥名字改为yinli@localhost.pub ,在这里改名是为了便于在 gitserver 中辨识多个 client。

四,使用 ssh 公钥初始化 gitosis
1,拷贝 yourname.pub 至服务器的 /tmp/yourname.pub。登入服务器机器的 gitserver 账户,进入先前提到 gitosis 目录,进行如下操作初始化 gitosis,初始化完成后,会在 gitserver 的 home 下创建 repositories 目录。

sudo -H -u gitserver gitosis-init < /tmp/yourname.pub

2,在这里,会将该 公钥的client 当做认证受信任的账户,因此在 gitserver 的 home 目录下会有记录,路径为 /~/.ssh/authorized_keys 的文件内容与 yourname.pub 差不多。

open -e  ~/.ssh/authorized_keys

我们需要将 authorizd_keys 稍做修改,用文本编辑器打开它,删除里面的”command=”gitosis-serve yourname”,no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ” 这一行:

3,然后,我们对 post-update 赋予可写权限,以便 client 端可以提交更改。

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

4,最后一步,修改 git 账户的 PATH 路径。
在gitosis目录下执行以下命令

yourname:gitosis git$ touch ~/.bashrcyourname:gitosis git$ echo PATH=/usr/local/bin:/usr/local/git/bin:\$PATH > .bashrcyourname:gitosis git$ echo export PATH >> .bashrcyourname:gitosis git$ cat .bashrc PATH=/usr/local/bin:/usr/local/git/bin:$PATHexport PATH

五,client 配置
1,回到 local 账户,首先在 terminal 输入如下命令修改 local 的 git 配置:

bash-3.2$ git config --global user.name "yourgitname"bash-3.2$ git config --global user.email "yourmail@yourcom.com"

与上面类似,此处我的name 填的是 yinli ,email 是 yinli@localhost ,根据自己的机器来修改。

2,测试服务器是否连接正确,将 10.1.4.211 换成你服务的名称或服务器地址即可。

 ssh gitserver@192.168.1.108

3,在本地 clone 服务器仓库,下面以 gitosis-admin.git 为例:

bash-3.2$ git clone gitserver@192.168.1.108:repositories/gitosis-admin.gitCloning into gitosis-adminremote: Counting objects: 5, done.remote: Compressing objects: 100% (5/5), done.remote: Total 5 (delta 0), reused 5 (delta 0)Receiving objects: 100% (5/5), done.bash-3.2$ lsDesktop        InstallApp    Music        SitesDocuments    Library        Pictures    gitosis-adminDownloads    Movies        Publicbash-3.2$ git 

在上面的输出中可以看到,我们已经成功 clone 服务器的 gitosis-admin 仓库至本地了。

六,添加client,以及新建&配置远程仓库
1,进入 gitosis-admin 目录,我们来查看一下其目录结构:gitosis.conf 文件是一个配置文件,里面定义哪些用户可以访问哪些仓库,我们可以修改这个配置;keydir 是存放ssh 公钥的地方。我们可以打开gitosis.conf来看看如何配置gitosis。

 [group gitosis-admin]members = yinli@localhostwritable = gitosis-admin

这个配置文件表达了如下含义:gitosis-admin组成员有yinli@localhost,该组对gitosis-admin仓库有读写权限。因为只添加了一个公钥,故members成员只有一个。

2,更改并提交本地配置文件
打开gitosis.conf,修改如下。
[group gitosis-admin]
members = yinli@localhost weixxx@localhost
writable = gitosis-admin

[group gitosis-xxprj]
members = yinli@localhost qiao@localhost
writable = teamwork

[group gitosis-xxprj_ro]
readonly = teamwork
members = weixxx@localhost

新建了gitosis-xxprj项目组以及gitosis-xxprj_ro只读项目组,并加入两个新的成员qiao@localhost,weixxx@localhost。添加了两个新的成员,因此必须加入相对应的公钥,qiao@localhost.pub,weixxx@localhost.pub拷贝并添加到keydir中。

当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。
加入新文件、提交并push到gitserver服务器:

$ git add . $ git commit -am “add teamweok prj and users” $ git push origin master

3,配置文件上传成功后,我们就需要为gitosis-xxprj等项目添加一个新的远程仓库。
我们在服务器上新建一个空的项目仓库,叫“teamwork”。
切换到gitserver服务器上:

$ cd ~/repositories/$ mkdir teamwork.git$ cd teamwork.git$ git init - -bare 注:这是在服务器上运行的,是为了初始化一个根级的git仓库

4,初始化项目
好了,现在服务器就搭建完了,并且有一个空的项目teamwork在服务器上。接下来呢?当然是测试一下,空仓库是不能clone的,所以需要某一个有写权限的人初始 化一个版本。就我来做吧,以下是在客户端完成。

$ mkdir teamwork-ori$ cd teamwork-ori/$ git init$ echo “/*add something*/” > hello$ git add .$ git commit -am “initial version”$ git remote add origin  gitserver@192.168.1.108:repositories/teamwork.git  $ git push origin master

到此为止teamwork已经有了一个版本了,team的其他成员只要先clone一下 teamwork仓库,就可以任意玩了。

0 0
原创粉丝点击