在 Mac 上使用 gitolite 搭建 Git 服务器
目标
- 使用 gitolite 搭建本地 git 服务
- 通过 iCloud 同步仓库
准备 ssh key
使用 ssh-keygen
命令生成 ssh key:
1 | $ ssh-keygen -t rsa -b 4096 |
默认会在 /Users/<username>/.ssh/
目录下随机生成 ssh key,建议输入一个密码。
允许远程登录 MacBook
打开 系统偏好设置
-> 共享
,勾选 远程登录
:
使用 iCloud 同步裸仓库
因 gitolite 服务器部署在本地,所以当我们重装系统时,一般会将 gitolite 服务的裸仓库都做一次备份。方便起见,这里使用 iCloud 同步我们的裸仓库。
在 iCloud 中创建一个名为 repositories
的文件夹,打开终端,cd 到 iCloud 根目录下:
1 | $ /Users/<username>/Library/Mobile\ Documents/com~apple~CloudDocs/ |
创建 repositories
目录的软连接到当前登录用户的家目录下的 repositories
目录:
1 | $ sudo ln -s /Users/<username>/Library/Mobile\ Documents/com\~apple\~CloudDocs/repositories/ /Users/git/repositories |
下面测试一下 iCloud 的同步功能是否正常。cd 到 /Users/git/repositories
目录下,创建一个名为 test
的测试文件:
1 | $ cd /Users/<username>/repositories && touch test |
接下来,打开 iCloud 中的 repositories
文件夹,如果能看到我们刚才创建的这个 test
文件,就说明 iCloud 的同步功能是正常的。
安装、配置 gitolite
首先,克隆 gitolite 的源码:
1 | $ git clone https://github.com/sitaramc/gitolite |
克隆源码后建立 gitolite 软连接:
1 | $ mkdir -p ~/bin |
再将 gitolite
追加到 .bash_profile
中:
1 | export PATH=/Users/<username>/bin:$PATH # 如果用 zsh 那就将这句话添加到 .bashrc 文件,注意将 <username> 替换成你的用户名 |
最后设置管理员用户共钥:
1 | $ gitolite setup -pk YourName.pub # 这里的 YourName.pub 就是之前生成的共钥(ssh key),通常叫做 id_rsa.pub |
上面的命令执行成功之后,会在 iCloud 的 repositories
目录下创建两个仓库:
gitolite-admin.git
:这是管理员仓库,添加人员、权限等操作需要将这个仓库克隆下来在其冲的 config 中配置。testing.git
:这个是一个测试仓库。
之后我们提交的代码都会同步到 iCloud。
因为我们是在本地搭建的 gitolite,所以还要在当前管理员用户的 .ssh
目录下创建一个配置文件 config:
1 | $ vim ~/.ssh/config |
config 文件中填写:
1 | Host local # local 就表示本机(127.0.0.1) |
示例
将 gitolite-admin.git
仓库克隆下来:
1 | git clone <username>@local:gitolite-admin.git # <username> 是你的用户名 |
用编辑器打开 gitolite-admin
仓库,修改其中的 gitolite.conf
文件:
图中新加的名为 hi-ruofei.com
仓库名就是本站的源码仓库。
修改之后,提交到 gitolite,gitolite 会自动帮我们创建一个名为 hi-ruofei.com
的裸仓库,该仓库会同步到 iCloud 上。